无法读取工作目录中的文件

时间:2018-04-18 20:54:25

标签: java io

我正在学习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();
            }
        }
    }
}

3 个答案:

答案 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()