我想在eclipse中使用哪个文本文件?

MJB*_*MJB 25 java eclipse file-io readfile

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

我使用以下代码来读取文件,但是我收到此错误:

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory)
Run Code Online (Sandbox Code Playgroud)
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);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

leo*_*loy 44

先问自己:您的文件是您应用程序的内部组件吗?(这通常意味着它包含在您的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()方法并使用(资源)相对路径:MyClass.getResource("MyClass.cfg").然后将在类路径中搜索该文件,但预先附加类包.所以,在这种情况下,你通常会放在你MyClass.cfgMyClass.java文件在同一目录.

  • 文件夹并不重要,我只是试着用文件夹来做,因为我不知道还能做什么..无论如何,我试过"Greg Adamski"的代码,但它不起作用.... (2认同)

Gre*_*ski 9

一条路要走

  1. 将您正在使用的文件添加到类路径中
  2. 使用资源加载程序找到该文件:

        URL url = Test.class.getClassLoader().getResource("myfile.txt");
        System.out.println(url.getPath());
        ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 打开它