gpt4 book ai didi

java - 将我想在 Eclipse 中使用的文本文件放在哪里?

转载 作者:IT老高 更新时间:2023-10-28 21:22:02 25 4
gpt4 key购买 nike

我需要在启动程序时读取一个文本文件。我正在使用 eclipse 并开始了一个新的 java 项目。在我的项目文件夹中,我得到了“src”文件夹和标准的“JRE System Library”+ staedteliste.txt ......我只是不知道将文本文件放在哪里。我真的尝试了我能想到的每个文件夹......我不能使用“硬编码”路径,因为我的应用程序需要包含文本文件......

我使用以下代码读取文件,但出现此错误:

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory)

public class Test {

ArrayList<String[]> values;

public static void main(String[] args) {
// TODO Auto-generated method stub

URL url = Test.class.getClassLoader().getResource("src/mjb/staedteliste.txt");
System.out.println(url.getPath()); // I get a nullpointerexception here!
loadList();
}

public static void loadList() {
BufferedReader reader;
String zeile = null;

try {
reader = new BufferedReader(new FileReader("src/mjb/staedteliste.txt"));
zeile = reader.readLine();

ArrayList<String[]> values = new ArrayList<String[]>();

while (zeile != null) {
values.add(zeile.split(";"));
zeile = reader.readLine();
}
System.out.println(values.size());
System.out.println(zeile);

} catch (IOException e) {
System.err.println("Error :"+e);
}
}

}

最佳答案

首先问问自己:您的文件是应用程序的内部组件吗?(这通常意味着它被打包在你的 JAR 中,如果它是一个 web 应用程序,则为 WAR;通常,它是一些配置文件或静态资源,只读)。

如果答案是肯定的,您不想为文件指定绝对路径。但是您既不想使用相对路径(作为您的示例)来访问它,因为Java 假定路径是相对于“当前目录”的。通常这种情况下的首选方式是从类路径相对加载

Java 为您提供 classLoader.getResource() 方法。并且 Eclipse(在正常设置中)假定 src/ 位于类路径的根目录中,因此在编译后,它将所有内容复制到您的输出目录( bin/ ),编译后的java文件( .class ),其余的保持原样。

因此,例如,如果您将文件放在 src/Files/myfile.txt 中,它将在编译时复制到 bin/Files/myfile.txt ;并且,在运行时,bin/ 将位于您的类路径(根目录)中。因此,通过调用 getResource("/Files/myfile.txt")(在它的某些变体中),您将能够读取它。

已编辑:此外,如果您的文件在概念上与 java 类相关联(例如,某些 com.example.MyClass 具有 MyClass.cfg 关联的配置文件),可以使用getResource() method from the class并使用(资源)相对路径:MyClass.getResource("MyClass.cfg")。然后将在类路径中搜索该文件,但会预先附加类包。因此,在这种情况下,您通常会将 MyClass.cfgMyClass.java 文件放在同一目录中。

关于java - 将我想在 Eclipse 中使用的文本文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com