我在哪里添加要在Eclipse中读取的文件?

时间:2014-08-19 06:37:40

标签: java eclipse file io filereader

我一直在尝试将文件读入Eclipse。我已经查看了其他问题,但这些答案并没有解决问题(刷新项目文件夹,使用getProperty并指定正确的路径等)。我已将文件移动到每个文件夹中,我得到相同的错误。我已将文件复制到目录中,如下所示:

directory

我还粘贴了以下代码。这很愚蠢。我得到的错误是“FileInputStream.open(String)line:not available [native method]”。

任何帮助将不胜感激。代码如下。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Modulo {
    public static void main(String[] args) throws FileNotFoundException {
        File questions = new File("input.txt");
        Scanner sc = new Scanner(questions);
        while(sc.hasNext()){
            int x = sc.nextInt();
            String divide = sc.next();
            int y = sc.nextInt();
            System.out.println(x % y);
        }
    }
}

3 个答案:

答案 0 :(得分:2)

答案取决于。

如果您希望在部署文件时将其嵌入应用程序中(例如,作为Jar文件),那么您不能使用File来引用它,因为您已尝试将其包含在内在你的申请中。

Eclipse进一步使问题复杂化,因为您无法在src目录中包含资源,但需要在resources目录中维护与src文件夹相同的级别(这个文件夹可能需要作为构建过程的一部分包含在内,但我只知道Eclipse的工作原理)......

一旦您纠正了所有这些,您就需要使用Class#getResource来加载资源......例如......

try (InputStream is = Modulo.class.getResourceAsStream("/input.txt")) {
    Scanner sc = new Scanner(is);
    //...
} catch (IOException exp) {
    exp.printStackTrace();
}

但是,如果您希望文件是程序的外部资源,则需要将其放在相对于程序执行位置的位置。

通常,我会建议项目目录,但我有一种有趣的感觉,Eclipse在不同的位置运行它的Java程序......我不知道你是否可以改变它......

在这种情况下,您可以使用System.out.println(new File(".").getAbsolutePath());System.out.println(new File(".").getCanonicalPath());System.out.println(System.getProperty("user.dir"));来告诉您当前正在运行的程序位置并将文件放在那里。

当然,一旦构建(进入Jar),您需要将文件放在相对于其执行位置的上下文中...

答案 1 :(得分:0)

将该文件复制到与src并行的Project文件夹中。这是代码的地方基本路径。

答案 2 :(得分:0)

默认情况下,Eclipse会在您的案例Remainders的主项目目录中查找该文件,如果您的文件不存在,则会出现异常。尝试将文件直接放在项目下并运行相同的程序,它应该正确运行。