我一直在尝试将文件读入Eclipse。我已经查看了其他问题,但这些答案并没有解决问题(刷新项目文件夹,使用getProperty并指定正确的路径等)。我已将文件移动到每个文件夹中,我得到相同的错误。我已将文件复制到目录中,如下所示:
我还粘贴了以下代码。这很愚蠢。我得到的错误是“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);
}
}
}
答案 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)
Remainders
的主项目目录中查找该文件,如果您的文件不存在,则会出现异常。尝试将文件直接放在项目下并运行相同的程序,它应该正确运行。