2012-02-22 19 views
4

絶対パスを使用せずに​​を使用してサーブレットでファイルを読み書きしているときは、私が取得しているパスは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のデフォルトの作業ディレクトリがプロジェクトフォルダであるためです。 uは、相対パスを使用して、指定したフォルダ内のファイルを書きたいならば、私はあなたがこれを行うお勧め:

  1. 日食に「ファイル名を指定して実行」メニューに移動、「ファイル名を指定して実行コンフィギュレーションを...」を選択
  2. クリックを「引数タブ」
  3. 引数タブの下に作業ディレクトリを設定します。 「その他」を選択し、ディレクトリを指定します。

これは、プロジェクトが指定されたディレクトリで実行されることを意味します。

私は幸運を助けました。

関連する問題