【发布时间】:2015-05-18 12:06:23
【问题描述】:
我面临文件写入问题,实际上当我在下面的代码中运行此代码时,while 循环会无限次迭代。
package com.demo.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("C:/Users/s.swain/Desktop/loginissue.txt");
out = new FileOutputStream("C:/Users/s.swain/Desktop/output.txt");
int c = in.read();
while (c != -1) {
System.out.println(c);
out.write(c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
任何人都可以告诉我如何编写这个文件。
谢谢
司坦苏
【问题讨论】:
-
我建议使用 Apache Commons IO 的
IOUtils.copy(InputStream, OutputStream。 -
虽然所有答案都只是建议修复代码中的错误;我赞同托马斯的建议:除非这是为了家庭作业/学习;你不应该重新发明轮子。有一些图书馆可以为你做“文件复制”;并且很可能它们经过了更好的测试,并且可以处理许多您不会想到的“跨平台”问题。
-
或
Files.copy(Paths.get("pathToInputFile"), Paths.get("pathToOutputFile"));
标签: java io inputstream outputstream