我想在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.cfg
和MyClass.java
文件放在同一目录中。
以上是 我想在Eclipse中使用的文本文件放在哪里? 的全部内容, 来源链接: utcz.com/qa/433815.html