私はIntelli-J Idea IDEを使用しており、Java EE Webプロジェクトで作業しています。私はwords.txt
ファイルを読み込もうとしています。コードはコマンドラインで正常に動作していますが、コードをglassfishサーバーにデプロイすると、 "FileNotFoundException"が表示されます。Java EE Webプロジェクトでファイルを読む
ファイルは、ファイルの内容読み取るためのコード
「のsrc /アナライザ/ pWords.txt」に位置しています:StackOverflowのを検索した後
Scanner scan = new Scanner(new File("src/Analyser/pWords.txt"));
を、私は私がこのファイルを追加する必要があることが判明しましたリソースディレクトリ。残念ながら、私はリソースを作成することができません。私はパッケージmain
とsrc
フォルダ内のリソースを作成すると、パッケージがmain.resources
なり、私のような別の方法を試してみました:
InputStream inputStream = new FileInputStream("src/Analyser/pWords.txt");
と
しかし、結果はnull
またはerror
です。
私のプロジェクトでsrc/Analyser/
ディレクトリからファイルを読み取る方法はありますか?これはJava EE Webプロジェクトです。
UPDATE:プロジェクト構造から
>>WEB-INF
フォルダアーティファクトは、私がpWords.txt
ファイルをアップロードしました。そして最後に、BufferedReaderは空ではなく、デバッグ中はbufferedReader
にデータが含まれていることがわかります。しかし、データを文字列変数にコピーすると、変数はnullのままです。私はそれについてかなり混乱しています。
コード:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream stream = classLoader.getResourceAsStream("pWords.txt");
BufferedReader bf = new BufferedReader(new InputStreamReader(stream));
String t = "";
try {
while((t = bf.readLine()) != null) { // in debugging, (cb) contains the char data as char elements.
t += bf.readLine(); // but t = null
}
} catch(IOException x) {
}
。クラスパスリソースの入力ストリームを開く必要があります。ソースではありません。 /リソースはクラスパスになければなりません。あなたのパッケージのルートに関連して読む。 – duffymo
@duffymoどのようにしてクラスパスにリソースを追加できますか?第二に、私はどちらかのリソースを作成することはできません。 – Nix
作成できませんか?もちろん可能です。標準のMavenディレクトリ構造を使用して、IntelliJ成果物を使用してJava EEパッケージを構築することをお勧めします。 src/main/resourcesの内容はCLASSPATHに自動的に入ります。 – duffymo