Исключение FileNotFound

Я пытаюсь прочитать файл в сервлете. Я использую Eclipse IDE.

Я получаю исключение FileNotFoundException, если указываю относительное имя файла.

List<String> ls=new ArrayList<String>();
Scanner input = new Scanner(new File("Input.txt"));
while(input.hasNextLine()) {
   ls.add(input.nextLine());
}

Тот же код работает, если я укажу абсолютный путь следующим образом:

Scanner input = new Scanner(new File("F:/Spring and other stuff/AjaxDemo/src/com/pdd/ajax/Input.txt"));

Файл Java и текстовый файл находятся в одной папке.

Он ищет текстовый файл в какой-то другой папке?


person Pratik    schedule 14.10.2012    source источник
comment
Поместите файл вне папки src..   -  person Rohit Jain    schedule 14.10.2012
comment
Если файл окажется на пути к классу, прочитайте его как ресурс. Если это файл, который необходимо изменить (например, файл конфигурации), то лучше поместить его вне контекста приложения и указать каталог, в котором его можно найти, в качестве параметра инициализации.   -  person Dave Newton    schedule 14.10.2012
comment
System.out.println(новый файл(Input.txt).getAbsolutePath()); Распечатайте это и посмотрите, где он ищет, и поместите туда свой файл!!!   -  person madhairsilence    schedule 14.10.2012
comment
Как мне сделать поиск в каталоге моего проекта?   -  person Pratik    schedule 14.10.2012
comment
Я поместил файл вне папки src, но это не помогло.   -  person Pratik    schedule 14.10.2012
comment
@DaveNewton Это не файл конфигурации. В нем есть строки, которые я хочу загрузить в свой ArrayList.   -  person Pratik    schedule 14.10.2012
comment
Используйте getResourceAsStream или как там он называется. Не открывайте его с помощью обычного файлового ввода-вывода.   -  person Dave Newton    schedule 14.10.2012
comment
Упомянув каталог проекта! Полный путь!   -  person madhairsilence    schedule 14.10.2012
comment
Я не понимаю, почему люди отвечают на вопрос такими, какие они есть: в Java есть известный механизм загрузки файлов из пути к классу, и это то, что следует использовать в сервлете, или следует указать абсолютный путь (вероятно, вне развертывания приложения).   -  person Dave Newton    schedule 14.10.2012


Ответы (2)


Настройка рабочего каталога

При работе внутри Eclipse у вас есть один вариант: задайте рабочий каталог в конфигурации запуска. Сделать это:

  1. Перейдите к Run | Run Configurations...
  2. Выберите свою конфигурацию на левой панели.
  3. Выберите вкладку Arguments
  4. Перейдите в раздел Working directory
  5. Выберите Other
  6. Войдите в желаемый базовый каталог

Вы можете проверить это в тесте, напечатав:

System.getProperty("user.dir") 

Преимущество этого заключается в том, что ваш код не меняется для производства по сравнению с тестом.

Рекомендация

Однако лучший подход — всегда явно указывать рабочий каталог в конфигурации. Это ставит рабочий каталог под непосредственный контроль вашего приложения и отделяет его от инструментов и контейнеров сервлетов, таких как Eclipse и Tomcat. Для этого вы должны использовать следующий File конструктор

new File(parent, file)
person btiernay    schedule 14.10.2012

- Если вы используете IDE, например Eclipse, поместите файл в папку Application's Project Folder.

- Вы также можете поместить его в папку src.

person Kumar Vivek Mitra    schedule 14.10.2012