我有一个Java项目,它的文件结构如下(如Eclipse所示):
ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
¦- Package1
-MyClass.java
¦- FileFolder
-MyFile.txt到目前为止,我可以使用以下命令来阅读myClass:
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文件夹中时,这个文件就找不到了。
有人知道怎么读这个文件吗?
提前感谢!
发布于 2010-08-26 01:34:09
动态Web项目生成WAR文件。
服务器可以或可以不将WAR文件扩展回文件系统结构。
最好使用类或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是类名。
发布于 2010-08-26 01:34:02
您正在使用相对于当前工作目录的路径打开文件。这不太可能在web应用程序容器上工作,因为当前工作目录不会是应用程序的根目录。
此外,您的文件可能不在文件系统上,而是在WAR文件中。
在webapp中打开文件的正确方法是使用ServletContext.getResourceAsStream()方法。
https://stackoverflow.com/questions/3568573
复制相似问题