2012-02-22 3 views
4

всякий раз, когда я читаю или записываю файл в сервлет с помощью new File() без использования абсолютного пути, путь, который я получаю, находится внутри папки eclipse. Я не знаю, что происходит. Есть ли у кого-нибудь идеи проблемы, с которыми я столкнулся.Чтение внешнего файла из сервлета

+1

Возможный дубликат [getResourceAsStream() vs FileInputStream] (http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream) – BalusC

ответ

2

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

Например, посмотрите на ServletContext.getRealPath.

Если вы можете рассказать нам больше о том, что вы пытаетесь сделать, это поможет.

2

Если для чтения файлов конфигурации вы должны использовать ServletContext.getResourceAsStream(java.lang.String path), метод вернет InputStream из ресурса, на который вы ссылались, и я советую хранить такие файлы в папке WEB-INF.

Если вы хотите писать файлы, вы всегда должны предоставлять (желательно в настраиваемом месте) абсолютный путь к каталогу, в который вы должны вписать, а также убедиться, что он существует и имеет соответствующие разрешения для такой операции.

0

Это связано с тем, что рабочий каталог eclipse по умолчанию является папкой проекта. Если и хочет, чтобы записать файл в указанной папке, используя относительный путь, который я предлагаю вам сделать это:

  1. перейти в меню «Выполнить» в затмении
  2. выбрать «конфигурацию Run ...»
  3. нажмите вкладка «Аргументы»
  4. Установите рабочий каталог под вкладкой «Параметры». Выберите «Другое» и укажите каталог.

Это означает, что ваш проект претендует на выполнение в указанном каталоге.

Надеюсь, я помог удачи.