Java菜鸟入门的弱智问题求救!在线等

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:43:18
import java.io.*;

public class TestFileOutputStream {
public static void main(String args[]) {
int i = 0;
InputStream in = null;
OutputStream out = null;

try{
in = new FileInputStream("D:/TestJava/io/TestFileOutputStream.java");
out = new FileOutputStream("D:/TestJava/io/Test.java");
while((i=in.read()) != -1) { out.write(i);
}
in.close();
out.close();
} catch(FileNotFoundException fe) {
System.out.println("文件没有找到!");
System.exit(-1);
} catch(IOException ioe) {
System.out.println("文件读写错误!");
System.exit(-1);
}

System.out.println("文件已经复制!");
}
}

如果将while循环改为:
while(in.read() != -1) {
i = in.read();
out.write(i);
}

问什么就不对啊? 小弟先谢谢各位大侠了!

因为这样的话,每次都多读一次,但是没有写入。
读取文件内容的时候可以想象有一个指针类的东西,要读取的时候首先指针往后移,然后读取。
而while(in.read() != -1) {
i = in.read();
out.write(i);
}
这样的话,就是每一次指针都往后移了两次,但是之后第二次的值被传递回来然后被写入了,这样的话就会照成文件数据错误

那是你没运行完,下载时多等等!上面说“完成”时再关了进就OK了…