1

ファイルから読み取るMAVENを使用して非常に小さなプログラムを構築しようとしていますが、FileNotFoundExceptionが発生するため、明らかに間違ったことをしています。

これは私のディレクトリ構造がどのように見えるかです:

my-app
      src
         main|
             |
             |--java|
             |      |
             |      Main.java
             |
             |--resources|
                         |
                         res.txt

res.txt には、Main.java から読みたい文字列がいくつか含まれています。

...
File file = new File("res.txt");
FileReader fr= new FileReader(file);
BufferedReader br = new BufferedReader( fr);
...

私はそれをコンパイルします: C:\my-app mvn package

ターゲットの下にjarを作成します。jar の中をのぞくと、Main.class と res.text の両方が隣り合って含まれていることがわかります。(同じディレクトリの下)

それでも、実行しようとすると:
java -cp target/my-app-1.0-SNAPSHOT.jar Main

私はFileNotFoundExceptionを与えます.Main.classはどういうわけかres.txtファイルを認識しません。なんで?res.txt はどこに置くべきですか? 他に何を設定すればよいですか?

どんな助けでも大いに感謝します。

4

3 に答える 3

0

.txt ファイルがターゲット フォルダーと jar ファイルの一部にコピーされていると思いますか?

その場合、リソース ローダーを使用して、ファイル システムからではなくクラスパスから取得します。

ファイルをロードする方法の例については、クラスパスの read file を参照してください。

于 2012-05-10T13:17:02.547 に答える
0

あなたはで試すことができます

File file = new File(this.getClass().getResource("/res.txt").getFile());

あるいは

File file = new File(this.getClass().getResource("/res.txt").toURI());
于 2012-05-10T13:19:43.747 に答える
0

InputStream TokenStream = this.getClass().getResourceAsStream("/files/Token.xlsx");

XSSFWorkbook wb = new XSSFWorkbook(TokenStream);

XSSFSheet シート = wb.getSheetAt(0);

これは、Excelファイルの読み取りに機能します

于 2018-08-20T20:32:33.673 に答える