Вопрос

У меня есть проект 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 ().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top