我正在编写一个复制大文件的程序,所以我想读取特定的字节数并写入另一个文件。我想复制文件并获得相同的字节数。但我越来越多了。另外,我还希望文件的内容保持不变。我在这做错了什么?如果有人能解释为什么我会收到这些额外的文本,那就太棒了。
的test.txt
sometext sometext sometext sometext
sometext sometext sometext sometext
sometext sometext sometext sometext
sometext sometext sometext sometext
Practice.java
public class Practice{
public static void main(String[] args){
byte[] buffer = new byte[100];
try{
FileInputStream f = new FileInputStream("test.txt");
FileWriter writer = new FileWriter("copy_test.txt");
int b;
while ((b=f.read(buffer)) != -1 )
writer.write(new String(buffer));
writer.close();
} catch(Exception e){
e.printStackTrace();
}
}
}
copy_test.txt
sometext sometext sometext sometext
sometext sometext sometext sometext
sometext sometext sometext sometext
sometext sometext sometext sometext
metext sometext sometext
sometext sometext sometext
答案 0 :(得分:5)
您的代码存在一些问题:
new String(byte[])
而不是指定编码FileWriter
)String
和0
作为参数,尽管我不会这样做。使用try-with-resources语句。b
- 这通常是一个坏主意。如果必须,请捕获特定的例外;我个人很少Exception
块 - 通常如果出现问题,中止整个当前操作是合适的。 (当然,有些情况下你可以重试等。)我知道这可能只是在你的示例代码中,而不是你的真实代码。Files.copy
来避免编写任何代码,假设您使用的是Java 7.(如果您使用的是#39) ;不,你应该!)如果您只想将catch
复制到InputStream
(并且您还没有实用程序库可用 - 这是 lot 的一部分库)你可以使用类似的东西:
OutputStream