我在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资源管理器中导航到该路径。
这是某种权限问题吗?
关于可能出错的任何线索?我很失落。
答案 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");
代替斜杠来实现平台独立性。