Java 我想在eclipse中使用的文本文件放在哪里?
我需要在启动程序时读取一个文本文件。我正在使用eclipse并启动了一个新的java项目。在我的项目文件夹中,我得到了“src”文件夹和标准的“JRE系统库”+statdeliste.txt。。。我只是不知道把文本文件放在哪里。我尝试了我能想到的所有文件夹…我不能使用“硬编码”路径,因为文本文件需要包含在我的应用程序中 我使用以下代码读取该文件,但出现以下错误:Java 我想在eclipse中使用的文本文件放在哪里?,java,eclipse,file-io,readfile,Java,Eclipse,File Io,Readfile,我需要在启动程序时读取一个文本文件。我正在使用eclipse并启动了一个新的java项目。在我的项目文件夹中,我得到了“src”文件夹和标准的“JRE系统库”+statdeliste.txt。。。我只是不知道把文本文件放在哪里。我尝试了我能想到的所有文件夹…我不能使用“硬编码”路径,因为文本文件需要包含在我的应用程序中 我使用以下代码读取该文件,但出现以下错误: Error:java.io.FileNotFoundException:staedteliste.txt(No such file o
Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory)
公共类测试{
数组列表值;
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
URL=Test.class.getClassLoader().getResource(“src/mjb/statedteliste.txt”);
System.out.println(url.getPath());//我在这里得到一个nullpointerexception!
loadList();
}
公共静态无效加载列表(){
缓冲读取器;
字符串zeile=null;
试一试{
reader=new BufferedReader(new FileReader(“src/mjb/staedteliste.txt”);
zeile=reader.readLine();
ArrayList值=新的ArrayList();
while(zeile!=null){
value.add(zeile.split(“;”);
zeile=reader.readLine();
}
System.out.println(values.size());
系统输出打印LN(zeile);
}捕获(IOE异常){
System.err.println(“错误:+e”);
}
}
}根据您的Java类包名称,您可能在目录结构中处于4或5个级别 例如,如果您的Java类包是com.stackoverflow.project,那么您的类位于src/com/stackoverflow/project 您可以使用多个
。/
向上移动目录结构,也可以将文本文件移动到与类相同的包中。移动文本文件会更容易。一个路径是
URL url = Test.class.getClassLoader().getResource("myfile.txt");
System.out.println(url.getPath());
...
您可能应该看看ClassLoader类中getResource的各种风格:。首先问问自己:您的文件是应用程序的内部组件吗? (这通常意味着它被打包在您的JAR中,如果它是web应用程序,则是WAR;通常,它是一些配置文件或静态资源,只读) 如果答案为“是”,则不希望为文件指定绝对路径。但是您既不想使用相对路径访问它(作为您的示例),因为Java假定该路径是相对于“当前目录””。通常,此场景的首选方式是从类路径相对加载它 Java为您提供了执行此操作的方法。Eclipse(在正常设置中)假定
src/
位于类路径的根目录中,因此,编译后,它会将所有内容复制到输出目录(bin/
)、编译形式的java文件(.class
)以及其他内容
因此,例如,如果您将文件放在src/Files/myfile.txt
中,它将在编译时复制到bin/Files/myfile.txt
;并且,在运行时,bin/
将位于类路径的根目录中。因此,通过调用getResource(“/Files/myfile.txt”)
(在它的一些变体中),您将能够读取它
编辑:此外,如果您的文件在概念上绑定到java类(例如,某些
com.example.MyClass
具有MyClass.cfg
关联的配置文件),则可以使用和使用(资源)相对路径:MyClass.getResource(“MyClass.cfg”)
。然后将在类路径中搜索该文件,但会预先附加类包。因此,在此场景中,您通常会将MyClass.cfg
和MyClass.java
文件放在同一个目录中。假设您在Eclipse上有一个名为“TestProject”的项目,并且您的工作区文件夹位于E:/Eclipse/workspace。构建Eclipse项目时,类路径是e:/Eclipse/workspace/TestProject
。当您试图读取“statedteliste.txt”时,您试图访问位于e:/eclipse/workspace/TestProject/statedteliste.txt
的文件
如果要为项目创建单独的文件夹,请在TestProject下创建文件文件夹,然后使用(相对路径)/Files/statedteliste.txt
访问该文件。如果将文件放在src文件夹下,则必须使用/src/staedteliste.txt
访问该文件。src文件夹中的文件文件夹将是/src/Files/statedeliste.txt
通过在开始处添加e:/eclipse/workspace/
可以使用绝对路径,而不是使用相对路径,但是使用相对路径更好,因为只要项目文件夹结构相同,就可以移动项目而不必担心重构。只需在
src
下创建一个文件夹Files
,然后将文件放在那里。
这看起来像src/Files/myFile.txt
注意:
在代码中,您需要这样指定Files/myFile.txt
e、 g
因此,当您构建项目并运行.jar文件时,它应该能够工作。如果这是一个简单的项目,您应该能够将txt文件直接拖动到项目文件夹中。具体来说,“项目文件夹”将是最高级别的文件夹。我试图通过将txt文件放入src文件夹来实现这一点(对于我正在做的一个家庭作业项目)
URL url = Test.class.getClassLoader().getResource("myfile.txt");
System.out.println(url.getPath());
...
getResource("Files/myFile.txt");