我有一个Spring webapp,其.war文件已经上传到Tomcat服务器.大多数基本功能都按预期工作 – 页面视图和表单提交.
我现在的问题是我的webapp需要读取和写入文件,我无法知道如何实现这一点(文件I / O返回java.lang.NullPointerException).
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),所以我认为我可能不需要使用数据库来包含它们,如minus minus所示.
文件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();
}