当前位置: 首页 > 面试题库 >

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

堵恺
2023-03-14
问题内容

启动程序时,我需要阅读一个文本文件。我正在使用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应用程序)中;通常,它是一些配置html" target="_blank">文件或静态资源,只读)。

如果答案是肯定的,则您不想为文件指定 绝对路径 。但是您都不希望使用 相对路径 访问它(例如您的示例),因为Java假定该路径是相对于“
当前目录 ”的。通常,此方案的首选方法是 相对地从classpath 加载它。

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文件放在同一目录中。



 类似资料:
  • 问题内容: 我有一个非常简单的属性文件测试,我正试图开始工作:(以下是TestProperties.java) 和TestProperties.properties在同一目录中: 我也将其另存为 当我从Eclipse运行TestProperties.java时,找不到属性文件: 难道我做错了什么? 问题答案: 将其放在您的源路径之一的根目录下,或在对的调用中完全限定资源名称,例如 有关更多信息,请

  • 问题内容: 我使用netfishs 6.7.1和glassfish v2.1编写了一个Web服务项目,将log4j.properties放入项目的根目录并使用: 在构造函数中: 在功能上: 但是,这是错误信息(实际上,我已经尝试将它几乎可以实现的每个目录都放入): 问题答案: 我知道回答这个问题有点晚了,也许您已经找到了解决方案,但是我将发布我找到的解决方案(在我进行大量Google搜索之后),因

  • 这应该是一个简单的过程,但还没有到目前为止。我一直在与vert合作。x 2表示一位,并切换到垂直。x 3最近。我想我应该尝试一个简单的vertx web示例,但无法通过一个简单的静态文件服务。 My server类包含以下代码段: 我正在使用Eclipse,但也一直在尝试从命令行运行vertx。我也在使用Maven。我有三个webroot文件夹,和垂直。x无法找到以下各项: 每个“webroot”

  • 我不熟悉eclipse和Java。我有一个H.W作业,我需要写一个读a的类。txt文件。 在模拟之前,我在我的C目录中创建了一个名为“in.txt”的文件。在运行配置中,我写了“C:\In.txt”作为参数。 我得到了这个错误: JAVA伊奥。FileNotFoundException:C:\in。txt(系统无法在java上找到指定的文件) 。伊奥。文件输入流。在java上打开(本机方法) 。伊

  • 我的程序是采取任何类型的文件和打开他们自己。 我已经试过了 我只使用文件获得正确的数据。

  • 在Vaadin 10-14中,我应该将静态文件放在哪里,例如CSS、JavaScript和聚合模板?静态文件(如图像)如何? 此外,如何在Vaadin中导入这些文件?Vaadin 14与npm和Vaadin 10-13与bower之间有差异吗?