首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件不再可读

文件不再可读
EN

Stack Overflow用户
提问于 2010-08-26 01:24:28
回答 2查看 65关注 0票数 0

我有一个Java项目,它的文件结构如下(如Eclipse所示):

代码语言:javascript
复制
ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
   ¦- Package1
      -MyClass.java
¦- FileFolder
   -MyFile.txt

到目前为止,我可以使用以下命令来阅读myClass:

代码语言:javascript
复制
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放到一个Dynamic Web Project和根目录下的FileFolder文件夹中时,这个文件就找不到了。

有人知道怎么读这个文件吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-26 01:34:09

动态Web项目生成WAR文件。

服务器可以或可以不将WAR文件扩展回文件系统结构。

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

示例:

代码语言:javascript
复制
reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/FileFolder/MyFile.txt")));

编辑:如果这是来自Servlet,请考虑改用gawi's answer

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

票数 1
EN

Stack Overflow用户

发布于 2010-08-26 01:34:02

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3568573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档