Если папка /test
находится в веб-контенте, то вам нужно следующее:
String absolutePath = getServletContext().getRealPath("/test/data.txt");
File file = new File(absolutePath);
или
String webcontentRoot = getServletContext().getRealPath("/");
File file = new File(webcontentRoot, "test/data.txt");
Вы это видите? Java IO понимает только пути файловой системы локального диска, но не URL-адреса или пути вне контекста. ServletContext#getRealPath()
должен использоваться для преобразования относительного веб-пути в абсолютный путь файловой системы на локальном диске , который, в свою очередь, может быть использован в дальнейшем в обычном Java IO. Вы должны никогда использовать относительные пути в Java IO. Вы будете зависеть от текущего рабочего каталога, который может отличаться в зависимости от среды / ситуации.
Тем не менее, вы обычно не хотите записывать файлы в веб-контент. Они будут потеряны всякий раз, когда вы передислоцируете ВОЙНУ. Скорее создайте фиксированный путь к файловой системе диска где-нибудь за пределами веб-приложения и используйте его. Или, что еще лучше, используйте независимую базу данных SQL:)