Абсолютный доступ к файлам на сервере Tomcat в war webapp
У меня есть веб-приложение Spring которого.war
файл был загружен на сервер Tomcat. Большинство основных функций работают по назначению - просмотры страниц и отправка форм.
Теперь моя проблема заключается в том, что моему веб-приложению нужно читать и записывать файлы, и я не знаю, как этого добиться (возврат файлов ввода-вывода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
Почему код возвращает другой путь, а не реальный путь?Если файловый ввод / вывод не применим, какие альтернативы я могу использовать?PS Мне просто нужно получить доступ к двум файлам (< 1 МБ каждый) так что я неЯ думаю, что мне может понадобиться использовать базу данных, чтобы содержать их, как предложеноминус вэта тема.
Файловый ввод / вывод
Ниже приведен код, который я использую для доступа к нужному мне файлу.
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();
}