Webapp无法在Tomcat中找到文件,但系统上存在路径

时间:2013-06-21 15:28:15

标签: java tomcat jersey

我在Tomcat中部署了一个Java Web应用程序,我需要读取放在webapp目录中的特定文件。

它试图阅读的路径:

String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\my-server\\config\\myfile.csv";
File file = new File(path);
if(file.exists())
    //read the file...

file.exists()返回false但我可以在Windows资源管理器中导航到该路径。 这是某种权限问题吗? 关于可能出错的任何线索?我很失落。

4 个答案:

答案 0 :(得分:2)

这远非实现您想要做的事情的最佳方式。一方面它非常脆弱。

您应该使用ServletContext.getResourceAsStream("/config/myfile.csv")

答案 1 :(得分:0)

我要说的第一件事是将'\'替换为'\'。

如果这不起作用,请查看CSV所在的特定文件夹的安全权限。

添加用户everyone并允许读取权限。

此外,放置硬编码路径不是读取文件的最佳方式,因为您可以使用允许从特定位置(已部署的战争)读取文件的java企业功能。

答案 2 :(得分:0)

尝试转义反斜杠:

String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\myserver\\config\\myfile.csv";

我还注意到你对'file'的引用错误。

if(File.exists())

可能是你刚刚复制错了:)。否则我不知道。希望这会有所帮助。

答案 3 :(得分:-1)

首先,不应该使用绝对路径,谁知道何时在其他地方部署它,路径将始终保持为真?您可以使用如图所示的相对路径。

String contextPath = request.getContextPath();

它将提供您的webapp目录,然后您可以将路径指定为

contextPath+="config\\myfile.csv"

还可以使用System.getProperty("file.separator");代替斜杠来实现平台独立性。