我尝试制作一个复制文件的简单程序。根据文档,FileInputStream.read()
和FileOuputStream.write()
似乎与我相似。它们分别从文件读取和写入int
。那么,为什么以下不起作用?
import java.io.*;
class CopyFile {
public static void main(String[] args) throws IOException {
FileInputStream original = new FileInputStream(args[0]);
FileOutputStream copy = new FileOutputStream(args[1]);
while (original.read() != -1) {
copy.write(original.read());
}
}
}
生成的文件与原始文件完全不同。为什么这不像我预期的那样工作?
答案 0 :(得分:0)
看看你的代码:
while (original.read() != -1) {
copy.write(original.read());
}
您读取一个字节来测试它是否为文件末尾,然后您读取另一个要写入的字节。
因此,跳过在while
条件下读取的字节。
正确的方法是:
int b;
while ((b=original.read()) != -1) {
copy.write(b);
}