我正在学习java的基本I / O,以下示例来自Oracle's tutorial。该程序流出FileNotFound异常。我将文件放在工作目录下,我也尝试使用绝对文件路径,结果仍然相同。我用Eclipse编写代码。可能导致此异常的原因是什么?感谢
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
}
答案 0 :(得分:1)
有很多事情可以导致这种异常。以下是一些尝试:
- 使用isFile()
方法验证Xanadu.txt是一个文件。如果它返回false,那么你知道你的问题在哪里。
- 尝试将文件放在项目目录中。
- 如果你已经尝试过使用绝对文件路径,我也会确保你的程序有权查看和写入文件。要检查eclipse是否有权限,请转到文件的属性
答案 1 :(得分:0)
将文件xanadu.txt
放在项目目录中,FileNotFoundException
将消失。
FileInputStream
会期望现有的输入文件。
答案 2 :(得分:0)
代码可能不会从您预期的路径执行。
您应该使用home
文件夹。 Windows上为C:\Users\<User Name>
,Linux上为/home/<User Name>
。您可以在那里创建一个文件夹来放置文件。
要获取home
目录,您可以使用此目录。
System.getProperty("user.dir")
其他解决方案是将文件打包在JAR中。
如果您想调试问题,可以像这样获取当前目录。
<Your Class>.class.getProtectionDomain().getCodeSource().getLocation()