файлы больше не читаются - PullRequest
       13

файлы больше не читаются

0 голосов
/ 25 августа 2010

У меня есть проект 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 в корневом каталоге, файл больше не обнаруживается.

Кто-нибудь знает, как прочитать файл?

Спасибо зазаранее!

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Динамические веб-проекты генерируют файлы WAR.

Сервер может расширять или не расширять файл WAR обратно до структуры файловой системы.

Лучше всего использовать Class или ClassLoader .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 - это имя класса.

0 голосов
/ 25 августа 2010

Вы открываете файл, используя путь относительно текущего рабочего каталога. Это вряд ли будет работать с контейнером веб-приложения, потому что текущий рабочий каталог не будет корнем вашего приложения.

Кроме того, ваш файл может находиться не в файловой системе, а в файле WAR.

Правильный способ открыть файл в веб-приложении - использовать метод ServletContext.getResourceAsStream ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...