0

このファイル構造を持つ Java プロジェクトがあります (Eclipse で表示):

ProjectName
+- Deployment Descriptor: ProjectName
¦- Java Resources:src
   ¦- Package1
      -MyClass.java
¦- FileFolder
   -MyFile.txt

myClass からこれまでのところ、次を使用して MyFile.txt を読み取ることができます。

try
{
    reader = new BufferedReader(new FileReader(new File("FileFolder/MyFile.txt")));

while((line=reader.readLine())!=null)
{
    line=line.trim();
    myVector.add(line);
}
reader.close();
}
catch(Exception e)
{
     e.printStackTrace();
}

しかし、Package1 を動的 Web プロジェクトに配置し、ルートに FileFolder フォルダーを配置すると、ファイルが見つかりません。

ファイルの読み方を知っている人はいますか?

前もって感謝します!

4

2 に答える 2

1

動的 Web プロジェクトは WAR ファイルを生成します。

サーバーは、WAR ファイルをファイル システム構造に展開する場合としない場合があります。

JAR .getResourceAsStream("/FileFolder/MyFile.txt")/WAR ファイルからファイルを読み取ることができ、InputStream.

例:

reader = new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("/FileFolder/MyFile.txt")));

編集:これがからのものである場合は、代わりにgawiの回答Servletを使用することを検討してください。

編集 2: これがメソッド内にある場合は、代わりにstaticを使用する必要があります。 はクラス名です。MyClass.classthis.getClass()MyClass

于 2010-08-25T17:34:08.650 に答える
0

現在の作業ディレクトリからの相対パスを使用してファイルを開いています。現在の作業ディレクトリがアプリケーションのルートではないため、これは Web アプリ コンテナーでは機能しない可能性があります。

さらに、ファイルはファイル システム上ではなく、WAR ファイル内にある場合があります。

Web アプリケーションでファイルを開く適切な方法は、ServletContext.getResourceAsStream() メソッドを使用することです。

于 2010-08-25T17:34:01.633 に答える