файлы больше не читаются
-
01-10-2019 - |
Вопрос
У меня есть проект Java, который имеет эту структуру файлов (показано в Eclipse):
ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
¦- Package1
-MyClass.java
¦- FileFolder
-MyFile.txt
И до сих пор от MyClass я могу прочитать myfile.txt, используя:
try
{
reader = new BufferedReader(new FileReader(new File("FileFolder/MyFile.txt")));
while((line=reader.readLine())!=null)
{
line=line.trim();
myVector.add(line);
}
reader.close();
}
catch(Exception e)
{
e.printStackTrace();
}
Но когда я поставлю Package1 в динамический веб-проект и папку Filefolder в root, файл больше не найден.
Кто-нибудь знает, как прочитать файл?
Заранее спасибо!
Решение
Динамические веб-проекты генерируют файлы войны.
Сервер может или не может расширить файл War обратно в структуру файловой системы.
Вы лучше всего используете класс или класс загрузки .getResourceAsStream("/FileFolder/MyFile.txt")
которые могут читать файлы из файлов JAR / WAR и возвращает InputStream
.
Пример:
reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/FileFolder/MyFile.txt")));
Редактировать: если это из Servlet
, Рассмотрите возможность использования Ответ Гави вместо.
Редактировать 2: если это в static
Метод, вам нужно будет использовать MyClass.class
вместо this.getClass()
, куда MyClass
это имя класса.
Другие советы
Вы открываете файл, используя путь относительно текущего рабочего каталога. Это вряд ли будет работать над контейнером веб-приложения, потому что текущий рабочий каталог не будет корнем вашего приложения.
Кроме того, вы файл не могут быть в файловой системе, а скорее в файле войны.
Правильный способ открыть файл в WebApp - это использовать метод ServletContext.getResourceasStream ().