Java でクラスパスからファイルを読み取る

Sheeraz Gul 2023年10月12日
  1. Java でクラスパスからファイルを読み取る
  2. getResourceAsStream() メソッドを使用して Java のクラスパスからファイルを読み取る
  3. getResource() メソッドを使用して、Java でクラスパスからファイルを読み取る
Java でクラスパスからファイルを読み取る

Java でクラスパスからファイルを読み取る方法は 2つあります。 リソース フォルダにあるファイルを inputstream としてロードするか、URL 形式でロードしてから、必要なことを実行できます。

このチュートリアルでは、Java でクラスパスからファイルを読み取る方法を示します。

Java でクラスパスからファイルを読み取る

前述のように、メソッドは 2つあり、1つは obj.getClass().getClassLoader().getResourceAsStream() で、もう 1つは obj.getClass().getClassLoader().getResource() です。

これらのメソッドは、ストリーム、URL、または対応するファイルを取得して、ファイルを読み取ることができます。 これらの操作を適用する前に、次の 2つの点を考慮する必要があります。

  1. getClass() メソッドは非静的であるため、public クラスのオブジェクトを宣言する必要があります。そのため、それを呼び出すオブジェクトが必要です。
  2. クラスパスはサンプルが実行されている場所と同じであるため、ファイルは正しいパスにある必要があります。

まず、getResourceAsStream() メソッドから始めましょう。

getResourceAsStream() メソッドを使用して Java のクラスパスからファイルを読み取る

package delftstack;

import java.io.*;

public class Read_Files {
  public static void main(String[] args) throws Exception {
    // creating object of the class for getClass method
    Read_Files Class_Object = new Read_Files();

    String Resource_File = "delftstack.txt";

    System.out.println("Reading the file " + Resource_File + " from classpath");

    InputStream Input_Stream =
        Class_Object.getClass().getClassLoader().getResourceAsStream(Resource_File);
    InputStreamReader Input_Stream_Reader = new InputStreamReader(Input_Stream);
    BufferedReader reader = new BufferedReader(Input_Stream_Reader);

    String Content;

    while ((Content = reader.readLine()) != null) {
      System.out.println(Content);
    }
  }
}

上記のコードは、getResourceAsStream メソッドを使用して inputstream を取得し、BufferedReader を使用してクラスパスからファイルを読み取ります。 ファイルがクラスパスにない場合、null ポインター例外が返されます。 出力を参照してください:

Reading the file delftstack.txt from classpath
Hello This is delftstack.com
The best online platform for learning different programming languages.

getResource() メソッドを使用して、Java でクラスパスからファイルを読み取る

package delftstack;

import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.List;

public class Read_Files {
  public static void main(String[] args) throws Exception {
    // creating object of the class for getClass method
    Read_Files Class_Object = new Read_Files();

    String Resource_File = "delftstack.txt";
    System.out.println("Reading the file " + Resource_File + " from classpath");

    URL Class_URL = Class_Object.getClass().getClassLoader().getResource(Resource_File);
    File Class_File = new File(Class_URL.toURI());
    List<String> Content;
    Content = Files.readAllLines(Class_File.toPath(), StandardCharsets.UTF_8);

    for (String Line : Content) {
      System.out.println(Line);
    }
  }
}

上記のコードは、getResource() メソッドを使用してクラスパスへの URL を取得し、URL を使用してファイルを読み取ります。 出力を参照してください:

Reading the file delftstack.txt from classpath
Hello This is delftstack.com
The best online platform for learning different programming languages.
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook