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

启动程序时,我需要阅读一个文本文件。我正在使用eclipse并启动了一个新的Java项目。在我的项目文件夹中,我有“ src”文件夹和标准的“

JRE系统库” + 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或WAR(如果它是一个Web应用程序)中;通常,它是一些配置文件或静态资源,只读)。

如果答案是肯定的,则您不想为文件指定 。但是您都不希望使用 访问它(例如您的示例),因为Java假定该路径是相对于“

”的。通常,此方案的首选方法是 加载它。

Java 为此提供了

classLoader.getResource()

方法。Eclipse(在常规设置中)假定src/它位于类路径的根目录中,因此在编译后,它将所有内容复制到输出目录(bin/)中,并以编译形式(.class)复制Java文件,而其余​​部分则保持原样。

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

编辑

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

以上是 我想在Eclipse中使用的文本文件放在哪里? 的全部内容, 来源链接: utcz.com/qa/433815.html

回到顶部