0

我有一个具有此文件结构的 Java 项目(在 Eclipse 中显示):

ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
   ¦- Package1
      -MyClass.java
¦- FileFolder
   -MyFile.txt

到目前为止,从 myClass 我可以阅读 MyFile.txt 使用:

try
{
    reader = new BufferedReader(new FileReader(new File("FileFolder/MyFile.txt")));

while((line=reader.readLine())!=null)
{
    line=line.trim();
    myVector.add(line);
}
reader.close();
}
catch(Exception e)
{
     e.printStackTrace();
}

但是当我将 Package1 放入动态 Web 项目和根目录中的 FileFolder 文件夹时,不再找到该文件。

有谁知道如何读取文件?

提前致谢!

4

2 回答 2

1

动态 Web 项目生成 WAR 文件。

服务器可能会也可能不会将 WAR 文件扩展回文件系统结构。

You're best off using the Class or ClassLoader .getResourceAsStream("/FileFolder/MyFile.txt") which can read files from JAR/WAR files, and returns an InputStream.

Example:

reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/FileFolder/MyFile.txt")));

Edit: If this is from a Servlet, consider using gawi's answer instead.

Edit 2: If this is in a static method, you'll need to use MyClass.class instead of this.getClass(), where MyClass is the class name.

于 2010-08-25T17:34:08.650 回答
0

您正在使用相对于当前工作目录的路径打开文件。这不太可能在 Web 应用程序容器上工作,因为当前工作目录不是应用程序的根目录。

此外,您的文件可能不在文件系统上,而是在 WAR 文件中。

在 webapp 中打开文件的正确方法是使用 ServletContext.getResourceAsStream() 方法。

于 2010-08-25T17:34:01.633 回答