【发布时间】:2013-12-05 15:22:50
【问题描述】:
我有一个 Spring webapp,其 .war 文件已上传到 Tomcat 服务器。大多数基本功能都按预期工作 - 页面视图和表单提交。
我现在的问题是我的 webapp 需要读取和写入文件,而我不知道如何实现这一点(文件 I/O 返回java.lang.NullPointerException)。
我使用Titi Wangsa Bin Damhore 建议的以下code to get the absolute path of a given file 来了解相对于服务器的路径:
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我只需要访问两个文件(每个文件minus 在this thread 中所建议的那样。
文件 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();
}
【问题讨论】:
标签: java spring tomcat file-io absolute-path