0

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

它尝试读取的路径:

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

4 回答 4

2

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

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

于 2013-06-21T21:35:46.783 回答
0

尝试像这样转义反斜杠:

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

而且我还注意到您对“文件”的引用错误。

if(File.exists())

可能是你复制错了:)。别的我不知道。希望这可以帮助。

于 2013-06-21T15:46:28.740 回答
0

我要说的第一件事是用'\'替换你的'\'。

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

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

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

于 2013-06-21T15:31:49.047 回答
-1

首先,不应该使用绝对路径,谁知道当你将它部署在其他地方时,路径会永远成立?您可以使用如图所示的相对路径。

String contextPath = request.getContextPath();

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

contextPath+="config\\myfile.csv"

也使用System.getProperty("file.separator");而不是斜线来实现平台独立性。

于 2013-06-21T20:42:03.597 回答