我无法在我的网络应用程序中打开文件。我在 Eclipse 中本地尝试过它并且工作正常但是当我尝试将它部署在 Openshift 上的 Tomcat 6 上时它找不到我的网络应用程序的资源文件。 WEB-INF
目录下的ProjectFiles
目录下有一些txt文件;本地打开文件的代码是
String nome_file = "C\:\\Users\\miKKo\\workspace\\fantacalcio_project\\WebContent\\WEB-INF\\ProjectFiles\\Risultati\\risultati_" + nome_lega + ".txt";
BufferedReader reader = new BufferedReader(new FileReader(nome_file));
我已经将它们推送到 Git 中的同一个存储库中(在服务器上我将我的项目重命名为“ROOT”)并且我已经用这个替换了字符串
String nome_file = this.getServletConfig().getServletContext().getContextPath()+"/WebContent/WEB-INF/ProjectFiles/Risultati/risultati_" + nome_lega + ".txt";
但它不起作用。我也尝试过使用上下文属性
/var/lib/openshift/51c6178a5004467630000019/jbossews/work/Catalina/localhost/_/WEB-INF/ProjectFiles
但是抛出的异常总是
java.io.FileNotFoundException: (#path) (No such file or directory)
我能为此做什么?
最佳答案
假设您的文件位于以下位置:
/WEB-INF/ProjectFiles/Risultati/risultat_text_file.txt
然后使用:
String path = "/WEB-INF/ProjectFiles/Risultati/risultat_text_file.txt";
InputStream inputStream = new FileInputStream(this.getServletConfig().getServletContext().getRealPath(path));
应该适合你。请注意,ServletContext.getRealPath()返回对应于给定虚拟路径的真实操作系统路径。
编辑:
如果这对您的情况不起作用,您真的需要重新访问您的虚拟路径。您可以手动检查此文件是否存在于 war 文件的预期目录中,或者您可以记录 getRealPath()
方法的输出以检查到底发生了什么!如有必要,您可以将 "/"
放入您的 getRealPath()
方法中,并检查您的应用程序的根路径是什么。
关于java - 在 Openshift 上的 servlet 中打开资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382775/