我有一个Spring webapp,其.war文件已上传到Tomcat服务器。大多数基本功能均按预期工作-页面视图和表单提交。
我现在的问题是我的Web应用程序需要读取和写入文件,而我对如何实现这一点一无所知(文件I /
O返回java.lang.NullPointerException)。
我使用以下代码来获取TitiWangsaBinDamhore建议的给定文件的绝对路径,以了解相对于服务器的路径:
HttpSession session = request.getSession();
ServletContext sc = session.getServletContext();
String file = sc.getRealPath("src/test.arff");
logger.info("File path: " + file);
这是输出路径:
/home/username/tomcat/webapps/appname/src/test.arff
但是,当我通过WinSCP检查文件目录时,文件的实际路径为:
/home/username/tomcat/webapps/appname/WEB-INF/classes/test.arff
这是我的问题 :
我如何将这些路径转换为类似的东西C:/Users/Workspace/appname/src/test.arff(本地机器上的原始路径可以正常工作)?服务器是Apache Tomcat 6.0.35和Apache Tomcat 6.0.35。
为什么代码返回的路径与实际路径不同?
如果文件I / O不适用,我可以使用哪些替代方法?
PS
我只需要访问两个文件(<1MB的每个),所以我不认为我可能需要使用数据库中包含他们所建议减去在此线程。
文件I / O
以下是用于访问所需文件的代码。
BufferedWriter writer;
try {
URI uri = new URI("/test.arff");
writer = new BufferedWriter(new FileWriter(
calcModelService.getAbsolutePath() + uri));
writer.write(data.toString());
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}