30

「File クラス」を使用してプロジェクト フォルダからファイルを取得したいのですが、どうすればよいですか?

File file=new File("x1.txt");
4

9 に答える 9

33

Java でファイルを取得するにはさまざまな方法がありますが、それが一般的な要点です。

try {} catch (Exception e){}File は a の一部であるため、少なくともa 内にラップする必要があることを忘れないでください。java.ioこれは、try-catch ブロックが必要であることを意味します。

Ericson の質問に足を踏み入れるつもりはありませんが、実際のパッケージを使用している場合、ファイルの場所を明示的に使用しない限り、ファイルの場所に問題が発生します。相対パスはパッケージでめちゃくちゃになります。

つまり、

src/
    main.java
    x.txt

この例では、File f = new File("x.txt");inside を使用main.javaすると、file-not-found 例外がスローされます。

ただし、使用File f = new File("src/x.txt");すると機能します。

それが役立つことを願っています!

于 2013-06-25T01:06:53.103 に答える
13

これは、ファイルがアプリケーション内に埋め込まれているようです。

またはgetClass().getResource("/path/to/your/resource.txt")を返すを使用する必要がありますURLgetClass().getResourceAsStream("/path/to/your/resource.txt");

埋め込みリソースでない場合は、アプリケーションの実行コンテキストからファイルが存在する場所への相対パスを知る必要があります

于 2013-06-25T00:55:55.277 に答える
9

パスを指定せずにファイルだけを配置した場合 (あなたが行ったように)、デフォルトのディレクトリは常にプロジェクトのディレクトリになります (「src」フォルダー内ではなく、プロジェクトのフォルダー内にあります)。

于 2013-06-25T00:56:04.427 に答える
3

私の場合、これらの行は機能しましたが、

ClassLoader classLoader = getClass().getClassLoader();
File fi = new File(classLoader.getResource("test.txt").getFile());

src 内に提供された test.txt ファイル

于 2014-12-18T08:17:10.460 に答える
2

与えられたapplication.yamlファイルtest/resources

ll src/test/resources/
total 6
drwxrwx--- 1 root vboxsf 4096 Oct  6 12:23 ./
drwxrwx--- 1 root vboxsf    0 Sep 29 17:05 ../
-rwxrwx--- 1 root vboxsf  142 Sep 22 23:59 application.properties*
-rwxrwx--- 1 root vboxsf   78 Oct  6 12:23 application.yaml*
-rwxrwx--- 1 root vboxsf    0 Sep 22 17:31 db.properties*
-rwxrwx--- 1 root vboxsf  618 Sep 22 23:54 log4j2.json*

テストコンテキストから、ファイルを取得できます

String file = getClass().getClassLoader().getResource("application.yaml").getPath(); 

実際にはファイルを指しますtest-classes

ll target/test-classes/
total 10
drwxrwx--- 1 root vboxsf 4096 Oct  6 18:49 ./
drwxrwx--- 1 root vboxsf 4096 Oct  6 18:32 ../
-rwxrwx--- 1 root vboxsf  142 Oct  6 17:35 application.properties*
-rwxrwx--- 1 root vboxsf   78 Oct  6 17:35 application.yaml*
drwxrwx--- 1 root vboxsf    0 Oct  6 18:50 com/
-rwxrwx--- 1 root vboxsf    0 Oct  6 17:35 db.properties*
-rwxrwx--- 1 root vboxsf  618 Oct  6 17:35 log4j2.json*
于 2016-10-07T02:18:41.447 に答える
0

javaFX 8で

javafx.scene.image.Image img = new javafx.scene.image.Image("/myPic.jpg", true);

URL url = new URL(img.impl_getUrl());
于 2015-03-01T12:49:16.793 に答える
0

簡単なグーグル検索を行ったところ、それが見つかりました

System.getProperty("user.dir");

現在の作業ディレクトリを文字列として返します。したがって、これからファイルを取得するには、使用するだけです

File projectDir = new File(System.getProperty("user.dir"));
于 2015-07-10T16:09:43.947 に答える