Creative Saplings

Java-リソースフォルダからファイルを読み取る

1月 9, 2021
No Comments
mkyongによる|最終更新日:2020年9月4日
閲覧日:1,368,612 | +4,610 pv / w

Javaでは、またはgetResourceを使用して、resourcesフォルダーまたはクラスパスのルートから1つまたは複数のファイルを読み取ります。

getResourceAsStreamメソッドはInputStreamを返します。

getResourceメソッドはURLを返し、通常はFileに変換します。 JARファイルで機能していません。

リソースフォルダ内のファイル

1.1 src/main/resources内のファイルを確認します。後でファイルにアクセスし、ファイルの内容を印刷します。

src / main / resources / database.properties
src / main / resources / json / file1.json
src / main / resources / json / file2.json
src / main / resources / json / sub / subfile1.json

1.2デフォルトでは、Maven、Gradleなどのツールをビルドします、または一般的なJavaプラクティスでは、すべてのファイルがsrc/main/resourcesからtarget/classesまたはbuild/classes。したがって、src/main/resourcesからファイルを読み取ろうとすると、プロジェクトのクラスパスのルートからファイルが読み取られます。

1.3以下はJARファイルの構造です。通常、resourcesフォルダ内のファイルはクラスパスのルートにコピーされます。

ターミナル

リソースフォルダからファイルを取得します。

2.1以下の例は、getResourceAsStreamとファイルjson/file1.jsonをresourcesフォルダーから読み取り、ファイルの内容を印刷する方法。

注

  • getResourceメソッドがJARファイルで機能していません。
  • getResourceAsStreamメソッドはどこでも機能します。
FileResourcesUtils.java

出力

ターミナル

2.2ここで、プロジェクトをJARファイルにパックして実行します。今回は、getResourceが失敗し、NoSuchFileExceptionまたはInvalidPathExceptionのいずれかを返します。リソースURLを介してJARファイル内のファイルを読み取ることはできません。

Linux(Ubuntu)でJARファイルを実行すると、NoSuchFileExceptionがスローされます。

ターミナル

WindowsでJARファイルを実行すると、InvalidPathExceptionがスローされます。

ターミナル

PSこれこの例では、Mavenプラグインmaven-jar-pluginを使用してJARファイルを作成します。

pom.xml

リソースフォルダーからファイルを取得します–ユニットテスト

3.1ユニットテスト用に、テストリソースをフォルダーsrc/test/resourcesに配置します。通常、テストリソース内のファイルはtarget/test-classesフォルダーにコピーされます。

src / test / resources / json / file1.json
src / test / resources / database.properties

3.2動作しますsrc/main/resourcesからファイルを読み取るのと同じ方法です。同じgetResourceAsStreamメソッドとgetResourceメソッドを使用して、src/test/resourcesからファイルを読み取ります。

FileResourcesTest.java

出力

ターミナル

リソースフォルダーからすべてのファイルを取得します。 (JAR以外の環境)

正確なファイル名がわからず、リソースフォルダーからサブフォルダーファイルを含むすべてのファイルを読み取りたい場合は、NIO ファイルに簡単にアクセスして読み取ることができます。

4.1次の例では、Files.walkを使用してフォルダからすべてのファイルを読み取りますsrc/main/resources/json:

FileResourcesUtils.java

出力

ターミナル

4.2ただし、標準のFiles.walkは、JARファイル内のファイルに直接アクセスできません。JAR環境で例4.1を実行してみると、FileSystemNotFoundExceptionがスローされます。

ターミナル

リソースフォルダからすべてのファイルを取得します。 (JARバージョン)

5.1この例は、FileSystemsとURIを介してJARファイル内のフォルダーをFiles.walkする方法を示しています。 jar:file:xxx.jar。

アイデアは次のとおりです。

  • ファイルは、すべてのファイル名を取得します。getPathsFromResourceJAR()を参照してください。
  • すべてのファイル名をループし、例2.1のように各ファイルにアクセスして印刷します。

。

FileResourcesUtils。java

出力

ターミナル

ソースコードのダウンロード

$ git clone https://github.com/mkyong/core-java

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 –URIの構文と形式
  • Maven –JARファイルの作成
  • Zipファイルシステムプロバイダー
  • JavaFiles.walkの例
  • Java –実行中のJARファイルのパスを取得します

mkyong

Mkyong.comの創設者であり、Javaとオープンソースのものが大好きです。 Twitterで彼をフォローしてください。 私のチュートリアルが気に入ったら、これらの慈善団体に寄付することを検討してください。

Articles
Previous Post

デルのノートパソコンでスクリーンショットを撮る方法(画像付き)

Next Post

PMC (日本語)

コメントを残す コメントをキャンセル

最近の投稿

  • 世界で最高の写真学校、2020年
  • ソブリン市民が反政府哲学を道路に持ち込む
  • スタッコ修理費用ガイド
  • マックレーカー
  • Precision Oncology (日本語)

アーカイブ

  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.