A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雷楚光 中级黑马   /  2012-2-22 12:09  /  2184 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复制windows下的EXE程序,为什么会从5M变到只有4M了。再把复制的文件再复制一次就没问题。是权限问题,还是读EXE文件没读完就有-1的值。


import java.io.*;
public class field
{
        public static void main(String[] args)throws IOException
        {
                FileReader f=new FileReader("d:\\c.exe");
                FileWriter f1=new FileWriter("d:\\a.exe");
                char[] c=new char[1024];
                int i=0;
                try
                {
                        while ((i=f.read(c))!=-1)
                        {
                                f1.write(c,0,i);
                               
                        }
                } catch (IOException e)
                {
                        System.out.print("1");
                }
                f1.flush();
               
                f.close();
                f1.close();
        }

}

6 个回复

倒序浏览
把flush方法放到f1.write(c,0,i);后测试一下。
回复 使用道具 举报
把flush方法放到f1.write(c,0,i);还是一样的没用
回复 使用道具 举报
不清楚哦
回复 使用道具 举报
.exe文件是二进制文件。别用字符流了。直接用字节流
回复 使用道具 举报
1. 据API:FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。
2. 字符流适合处理文本文件,EXE程序显然应该用字节流。
回复 使用道具 举报
用 BufferedOutputStream  包装 FileInputStream  ,还有你的资源关闭代码要放在finally块中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马