「File クラス」を使用してプロジェクト フォルダからファイルを取得したいのですが、どうすればよいですか?
File file=new File("x1.txt");
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");
すると機能します。
それが役立つことを願っています!
これは、ファイルがアプリケーション内に埋め込まれているようです。
またはgetClass().getResource("/path/to/your/resource.txt")
を返すを使用する必要がありますURL
getClass().getResourceAsStream("/path/to/your/resource.txt");
埋め込みリソースでない場合は、アプリケーションの実行コンテキストからファイルが存在する場所への相対パスを知る必要があります
パスを指定せずにファイルだけを配置した場合 (あなたが行ったように)、デフォルトのディレクトリは常にプロジェクトのディレクトリになります (「src」フォルダー内ではなく、プロジェクトのフォルダー内にあります)。
私の場合、これらの行は機能しましたが、
ClassLoader classLoader = getClass().getClassLoader();
File fi = new File(classLoader.getResource("test.txt").getFile());
src 内に提供された test.txt ファイル
与えられた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*
javaFX 8で
javafx.scene.image.Image img = new javafx.scene.image.Image("/myPic.jpg", true);
URL url = new URL(img.impl_getUrl());
簡単なグーグル検索を行ったところ、それが見つかりました
System.getProperty("user.dir");
現在の作業ディレクトリを文字列として返します。したがって、これからファイルを取得するには、使用するだけです
File projectDir = new File(System.getProperty("user.dir"));