2013-07-09 2 views
0

Предположим, я хочу записать в новый файл, созданный в пространстве моего webapp.Создание нового файла без использования ServletContext

Один из способов - использовать getServletContext().getRealPath("/") и использовать эту строку для создания нового файла на сервере. Однако часто я сталкиваюсь с советом, как не используя getServletContext().getRealPath("/").

Может кто-нибудь, пожалуйста, сообщите мне о другом способе написать новый файл в моем веб-приложении?

Большое спасибо.

ответ

1

Имейте некоторое свойство конфигурации, содержащее абсолютный путь каталога за пределами пути webapp и веб-сервера, прочитайте этот путь из свойства конфигурации и напишите в этот каталог.

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

Это будет

  • работа, даже если приложение развертывается как военный файл и никогда не распакованы в файловой системе
  • позволяют перераспределять следующую версию приложения или сервера, не удаляя все в загруженном/созданные файлы
  • позволяет добавлять любой контроль вы хотите на выгружаемых/созданные файлы, вместо того, чтобы сделать их доступными для всех

Короче говоря, лечить эти файлы как данные, хранящиеся в базе данных, которая является файловой системой вместо базы данных SQL.

+0

Спасибо JB за ваш ответ. Однако, если я развертываю сервер, где я не могу быть уверен в абсолютном пути каталога, то что я могу сделать, чтобы записать файл. – userjoe

Смежные вопросы