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

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

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

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

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/
    可以使用绝对路径,而不是使用相对路径,但是使用相对路径更好,因为只要项目文件夹结构相同,就可以移动项目而不必担心重构。

    请试试这个

  • 在eclipse中,右键单击要使用的文本文件, 查看并复制存储在硬盘中的完整路径(如在UNIX中)/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/testfile.txt”)

  • 请将此完整路径放入并重试

  • 如果有效,则类路径问题else GOK:)


  • 只需在
    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");