Java には「現在のディレクトリ」という概念があります。Eclipse 経由でアプリケーションを起動すると、これは実際にインストール ディレクトリを指している場合があります。パスを指定しない場合、ファイルはこの現在のディレクトリに作成されます。したがって、あなたがそこにたどり着く理由test.txt
。
ディレクトリはEclipseに固有のWebContent
ものです。あなたのコードは、そこに何かを置くことに依存すべきではありません。アプリケーションをライブ サーバーにデプロイするときではなく、開発するときにのみ Eclipse 経由でアプリケーションを起動します。
このディレクトリのコンテンツはroot
.war の .war になります。これは、アプリの起動方法と展開方法に関係なく、よく知られている場所ですが、実行時にこの場所に何かを書き込むことに依存することはできません。アプリケーションをパッケージ化された .war としてデプロイするか (ライブ デプロイの場合)、アプリケーションをパッケージ化せずにデプロイしても、実行時に行われた変更をアプリケーション サーバーが取得できない場合があります。
アプリケーションが単一のサーバーでのみ実行されることが確実な場合にできることは、ファイル システム上の既知の場所 ( 、 、 など) にファイルを書き込むことです/tmp
。/var/yourapp/files
これらのファイルを提供するコードは、そこからファイルを取得できます。位置。
Java EE ルールに従って 100% 安全にプレイしたい場合は、設定可能なアドレスを持つ FTP サーバーのようなものにファイルを保存します。技術的には、戦争はクラスター上のノード間で出荷され、リクエストが異なるマシンに送信される可能性があるため、ローカルファイルシステムに依存することは機能しません。