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

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

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

Error:java.io.FileNotFoundException:staedteliste.txt(No such file or directory) 

 public class Test { ArrayList 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 values = new ArrayList(); 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中,如果它是一个Web应用程序,则为WAR;通常,它是一些配置文件或静态资源,只读)。

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

Java为您提供了classLoader.getResource()方法。 Eclipse(在正常设置中)假定src/是在类路径的根目录中,因此在编译之后,它会将所有内容复制到输出目录( bin/ ),编译forms的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文件放在同一目录中。

一条路要走

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

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

假设您在Eclipse上有一个名为“TestProject”的项目,而您的工作区文件夹位于E:/ eclipse / workspace。 当您构建Eclipse项目时,您的类路径就是e:/eclipse/workspace/TestProject 。 当您尝试阅读“staedteliste.txt”时,您尝试访问e:/eclipse/workspace/TestProject/staedteliste.txt的文件。

如果要为项目创建单独的文件夹,请在TestProject下创建Files文件夹,然后使用(相对路径) /Files/staedteliste.txt访问该文件。 如果将文件放在src文件夹下,则必须使用/src/staedteliste.txt访问它。 src文件夹中的Files文件夹是/src/Files/staedteliste.txt

您可以通过在开头添加e:/eclipse/workspace/来使用绝对路径,而不是使用相对路径,但使用相对路径更好,因为只要项目文件夹结构可以移动项目而不必担心重构是一样的。

只需在src下创建一个文件夹Files ,然后将文件放在那里。 这看起来像src/Files/myFile.txt

注意:在您的代码中,您需要指定像这样的Files/myFile.txt例如

 getResource("Files/myFile.txt"); 

因此,当您构建项目并运行.jar文件时,这应该可以工作。

根据您的Java类包名称,您可能在目录结构中有4或5个级别。

例如,如果您的Java类包是com.stackoverflow.project,那么您的类位于src / com / stackoverflow / project。

您可以使用多个../向上移动目录结构,也可以将文本文件移动到与您的类相同的包中。 移动文本文件会更容易。

您可能应该看一下ClassLoader类中各种版本的getResource: http : //java.sun.com/j2se/1.4.2/docs/api/java/lang/ClassLoader.html

MJB

请试试这个

  1. 在eclipse中“右键单击”你要使用的文本文件,查看并复制存储在HDD中的完整路径(如果在UNIX中)/home/sjaisawal/Space-11.4-template/provisioning/devenv/Test/src/testpath/ TESTFILE.TXT“)

  2. 把这条完整的路径试试吧。

  3. 如果它工作然后类路径问题其他GOK 🙂

如果这是一个简单的项目,您应该能够将txt文件直接拖到项目文件夹中。 具体来说,“项目文件夹”将是最高级别的文件夹。 我试着通过将txt文件放在src文件夹中来做这个(对于我正在做的家庭作业项目),但这不起作用。 但最后我想出把它放在项目文件中。

一个很好的教程是http://www.vogella.com/articles/JavaIO/article.html 。 我用这个作为i / o的介绍并且它有所帮助。

看看这个video

您所要做的就是选择您的文件(假设它是相同的txt文件forms),然后将其拖到Eclipse中的项目中,然后将其放在那里。 选择复制而不是链接,因为它更灵活。 就是这样 – 我只是尝试过。