Java でリソースの URL とコンテンツを取得する

Sarwan Soomro 2023年10月12日
  1. Java で getResource() 関数を使用してリソース URL を取得する
  2. Java で getResourceAsStream() を使用してリソースコンテンツを取得する
Java でリソースの URL とコンテンツを取得する

このチュートリアルでは、getResource() 関数を使用して Java でリソース URL を取得し、リソースファイルを読み取る方法を示します。

Java で getResource() 関数を使用してリソース URL を取得する

Java の getResource() メソッドを使用して、image.png、image1.png、resourcetext.txt の 3つのファイルの URL を取得します。

getResource() 関数の本体に文字列でリソース URL を渡します。次に、関数は指定されたリソース文字列を検索し、URL を含むオブジェクトを返します。

構文:

getResource(String);
public resource = yourclassname.getResource("Resource URL");

コード例:

/*//you will learn how to get image URL in the following program
//import statements
 */
import java.lang.*;
import java.net.URL;
public class getImageUrl {
  public static void main(String[] args) throws Exception {
    getImageUrl obj = new getImageUrl();
    @SuppressWarnings("rawtypes") Class resource = obj.getClass();
    URL imageurl = resource.getResource("/image.png");
    System.out.println("Resource URL one is = " + imageurl);
    URL imageurl2 = resource.getResource("/image2.png");
    System.out.println("Resource URL two is = " + imageurl2);
    URL texturl = resource.getResource("/textresource.txt");
    System.out.println("Resource URL of the text file  is = " + texturl);
  }
}

出力:

Resource URL one is = file:/C:/Users/NAME/Desktop/JAVA/get%20resource%20url%20java/bin/image.png
Resource URL two is = file:/C:/Users/NAME/Desktop/JAVA/get%20resource%20url%20java/bin/image2.png
Resource URL of the text file is = file:/C:/Users/NAME/Desktop/JAVA/get%20resource%20url%20java/bin/textresource.txt

ご覧のとおり、3つのファイルを文字列 URL に保存しました。次に、obj.getClass() メソッドを使用して、画像の URL を受け取るメインクラスを取得します。

関数 getResource() は、URL を返す関数です。

Java で getResourceAsStream() を使用してリソースコンテンツを取得する

Java は、ファイルを読み取るために getResourceAsStream() と呼ばれるメソッドを予約しています。この関数は、クラスの指定されたリソースを含む InputStream オブジェクトを返します。

以下の例では、getResourceAsStream() を使用してこのファイルを読み取ります:/get resource URL java/src/readfile/GetResourceReadFile.java. そして、文字列 getresourcefromhere = "readfile/example.json"; はJSONファイルを格納する場所です。

構文:

private InputStream getFileFromResourceAsStream(String getresourcefromhere) {
  ClassLoader cL = getClass().getClassLoader();
  InputStream inputStream = cL.getResourceAsStream(getresourcefromhere);
  return inputStream;
}

基本的な構文を理解している場合は、次の完全なプログラムを確認してください。

このプログラムはすべてのプラットフォームで動作します。メインクラスとファイルディレクトリの管理に注意を払う必要があります。

// import necessary packages
package readfile;
import java.io.*;
import java.nio.charset.StandardCharsets;
// start function
public class GetResourceReadFile {
  private static final String String = null;
  public static void main(String[] args) throws IOException, Exception {
    GetResourceReadFile app = new GetResourceReadFile();
    // get resource file
    String getresourcefromhere = "readfile/example.json";
    // use inputStream to return object containing resource
    InputStream getresourceandreadit = app.getFileFromResourceAsStream(getresourcefromhere);
    printInputStream(getresourceandreadit);
  }
  private InputStream getFileFromResourceAsStream(String getresourcefromhere) {
    // load class
    ClassLoader cL = getClass().getClassLoader();
    InputStream inputStream = cL.getResourceAsStream(getresourcefromhere);
    return inputStream;
  }
  private static void printInputStream(InputStream r) {
    try (InputStreamReader sR = new InputStreamReader(r, StandardCharsets.UTF_8);
         BufferedReader R = new BufferedReader(sR)) {
      String GOT_IT = String;
      // not necessary but will give you basic idea
      if (GOT_IT == String) {
        // you can print multiple files
        while ((GOT_IT = R.readLine()) != null) {
          // print file
          System.out.println(GOT_IT);
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

{
    "File Name": "Demonstration File",
    "File Type": "JSON FILE",
    "File Reader": "getResource",
    "File creation date:": 2/18/2022,
    "Platform": {
        "Langauge Type": "Programming",
        "Langugae Name": "JAVA",
        "Platform": "Oracle",
        "Importance": "Very High"
    },
    "Development Environment": [
        { "JDK": "JAVA", "LATEST": "17" }
    ]
}

プログラム全体は、URL を使用した前の例と同じです。唯一の違いは、InputStreamClassLoader cL = getClass().getClassLoader(); です。

著者: Sarwan Soomro
Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn