Java

【Java】ファイル読み込み

2021年5月14日

Filesクラスでファイル読み込み

Files.readString(Java 11以降)

Java11以降のバージョンであれば「Files.readString」でファイルの内容を簡単にStringに代入することができます。

[Files.readStringの使用例]

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileReadStringSample {

    public static void main(String[] args) {
        Path path = Paths.get("C:\\work\\sample.txt");

        try {
            String text = Files.readString(path, StandardCharsets.UTF_8);
            System.out.println(text);

        } catch (IOException e) {
            System.out.println("ファイル読み込みに失敗");
        }
    }
}

[実行結果]

あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

スポンサーリンク

Files.readAllLines(Java7以降)

Java7以降のバージョンであれば「Files.readAllLines」でファイルの内容を簡単にStringのListに代入することができます。

[Files.readAllLinesの使用例]

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class FileReadAllLinesSample {
    public static void main(String[] args) {
        Path path = Paths.get("C:\\work\\sample.txt");

        try {
            List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

            for (String value : lines) {
                System.out.println(value);
            }
        } catch (IOException e) {
            System.out.println("ファイル読み込みに失敗");
        }
    }
}

[実行結果]

あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

FileReaderクラスでファイル読み込み

ファイル読み込みの基本であるFileReaderでファイルを一行ずつ読み込むことができます。ただし、この方法は文字コードを指定することができません。(文字コードを指定する場合は、FileInputStreamを使用します)

[FileReaderの例]

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderSample {

    public static void main(String[] args) throws IOException {
        File file = new File("C:\\work\\sample.txt");
        BufferedReader reader = null;

        try {
            reader = new BufferedReader(new FileReader(file));

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

        } catch (FileNotFoundException e) {
            System.out.println("ファイルが存在しない");
        } catch (IOException e) {
            System.out.println("ファイル読み込みに失敗");
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }
}

[実行結果]

あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

スポンサーリンク

FileReaderでファイルを読み込むときは、BufferedReaderのcloseを呼び出すのを忘れないように注意が必要です。(※FileReaderのcloseはBufferedReader.closeの中で呼び出されている)

closeの書き忘れを防ぐためにも、Java7以降で使えるtry-with-resourcesを使うことをお勧めします。※try-with-resources文は、処理の終わりで各リソースを確実に閉じてくれる

[try-with-resourceを使った場合の例]

public static void main(String[] args) {
    File file = new File("C:\\work\\sample.txt");

    try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
        String text;
        while ((text = reader.readLine()) != null) {
            System.out.println(text);
        }

    } catch (FileNotFoundException e) {
        System.out.println("ファイルが存在しない");
    } catch (IOException e) {
        System.out.println("ファイル読み込みに失敗");
    }
}

InputStreamReaderで文字コードを指定してファイル読み込み

InputStreamReaderを使用することで、文字コードを指定してファイルを一行ずつ読み込むことができます。

[InputStreamReaderの例] ※try-with-resourcesを使用

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class InputStreamReaderSample {

    public static void main(String[] args) {
        File file = new File("C:\\work\\sample.txt");

        try (BufferedReader reader = new BufferedReader(
                 new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {

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

        } catch (FileNotFoundException e) {
            System.out.println("ファイルが存在しない");
        } catch (IOException e) {
            System.out.println("ファイル読み込みに失敗");
        }
    }
}

[実行結果]

あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

helpful