文件不再可读

时间:2010-08-25 17:24:28

标签: java file java-ee bufferedreader

我有一个具有此文件结构的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项目和root中的FileFolder文件夹时,不再找到该文件。

有谁知道如何阅读文件?

提前致谢!

2 个答案:

答案 0 :(得分:1)

动态Web项目生成WAR文件。

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

您最好使用Class或ClassLoader .getResourceAsStream("/FileFolder/MyFile.txt"),它可以从JAR / WAR文件中读取文件,并返回InputStream

示例:

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

修改:如果来自Servlet,请考虑改为使用gawi's answer

编辑2:如果这是static方法,则需要使用MyClass.class代替this.getClass(),其中MyClass是类名。

答案 1 :(得分:0)

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

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

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