バナー画像

プログラミングで実装することの多い頻出処理の1つとして、テキストファイルの読み込みが挙げられます。

本記事では、Java言語を使ったテキストファイルの読み込み方法について、サンプルコードを掲載しながらご紹介していきます。

Javaでテキストファイルを読み込む3つの方法


Javaではテキストファイルを読み込む際、複数の方法で実現することが可能です。

よく利用される3つの方法について今回の記事で概要を確認しておきましょう。

テキストファイル読み込み方法
  • Files
  • FileReader
  • FileInputStream

テキストファイル読み込みのJavaサンプル1: Files


Java7から利用可能な「java.nio.file.Files」では「readAllLines」というメソッドが提供されており、ファイルを全行読み込む処理が簡単に実装出来るようになっています。

Filesを使ったサンプル

まずは読み込み用にテキストファイル「sample.txt」を下記内容で実行ファイルと同一フォルダに格納しておきます。

sample.txt

名前 山田太郎
年齢 30
生年月日 1990/11/27
住所 大阪府大阪市xxxxxx

実際に実行するファイルは「Main.java」として下記の内容で作成します。

package sample;

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

public class Main {
	
	public static void main(String[] args) {
		try {
			Path path = Paths.get("sample.txt");
			List lines = Files.readAllLines(path);
			
			for (String str : lines) {
				System.out.println(str);
			}
		} catch(IOException ioex) {
			ioex.printStackTrace();
		}
	}

}

コード解説

14行目が今回利用したreadAllLinesメソッドで引数に指定したパスにあるファイルを全行読み込み、List型の変数に格納します。

サンプルではファイル名だけを指定していますが、この場合Javaの実行ファイルと同一階層にテキストファイルが格納されている必要があります。

ポテパンダの一言メモ

同一階層以外のテキストファイルを読み込む場合、ファイル名だけでなくパスを明示的に指定する必要があります。

readAllLinesメソッドの引数には「Path」クラスで指定する必要があるため、13行目の記述で文字列からPathのオブジェクトを生成しています。

16~18行目の記述は、取得したテキストファイルの内容を1行ずつループさせて、コンソールに出力させる処理です。

テキストファイル読み込みのJavaサンプル2: FileReader


FileReaderでテキストファイルを読み込み、BufferedReaderと組み合わせて行単位での読み込みを行う方法も一般的です。

FileReaderを使ったサンプル

読み込むテキストはFilesクラスの説明で紹介したテキストの内容をそのまま流用して使用します。

Main.java

Main.javaの内容を書き直して、FileReaderとBufferedReaderを使ってテキストファイルを読み込んでいきます。

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

public class Main {
	
	public static void main(String[] args) {
		File file = new File("sample.txt");
		try (BufferedReader br = new BufferedReader(new FileReader(file))) {
			String str;
			while ((str = br.readLine()) != null) {
				System.out.println(str);
			}
		} catch (IOException ioex) {
			ioex.printStackTrace();
		}
	}

}

コード解説

今回の書き方ではJava7以前から利用出来た「java.io」のみでテキストファイルを読み込んでいきます。

9行目の処理でファイルパスを指定し、10行目の記述で「FileReader」で開いたファイルを「BufferedReader」クラスとして取得しています。

12行目に記述した「readLine」メソッドによりファイルの内容を一行ずつ読み込み、コンソールに出力しています。

ポテパンダの一言メモ

FileReaderクラスだけでもテキストファイルの読み込みは可能ですが、効率的に処理するためにもBufferedReaderクラスと組み合わせて使用するのが一般的です。

テキストファイル読み込みのJavaサンプル3: FileInputStream


FileInputStreamとInputStreamReaderを使ってもテキストファイルを読み込むことが可能なので、確認しておきましょう。

FileInputStreamを使ったサンプル

同様に読み込むテキストファイルはFilesクラスの説明で利用した「sample.txt」を使用します。

Main.java

Main.javaの内容は下記のように記述してFileInputStreamでテキストファイルを読み込んでみましょう。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class Main {
	
	public static void main(String[] args) {
		
		try {
			String str;
			BufferedReader bfReader = new BufferedReader(new InputStreamReader(new FileInputStream("sample.txt"), Charset.forName("UTF-8")));
			
			while ((str = bfReader.readLine()) != null) {
                System.out.println(str);
			}
			bfReader.close();
		} catch (IOException ioex) {
			ioex.printStackTrace();
		}
	}

}

コード解説

1つ前に紹介したFileReaderとほとんど同じ書き方でファイルを読み込むことが可能です。

13行目のファイル読み込みで、Fileクラスを渡すのではなく文字列としてFileInputStreamクラスにテキストのパスを渡しています。

「Charset.forName(“UTF-8”)」の記述では文字コードを指定しており、ストリーミングで読み込んだ内容をどの形式でエンコーディングするのか設定することが出来ます。

また今回はBufferedReaderクラスのreadLineメソッドで1行ずつ読み込むよう設定しましたが、InputStreamReaderクラスのreadメソッドを使用してバイト単位で読み込ませることも可能です。

さいごに: テキストファイル読み込み処理はJava開発の頻出処理


本記事では、システム開発の頻出処理であるテキストファイルの読み込み方法について、Java言語を使ったサンプルコードで解説してきました。

基本的な流れは同じなので、処理の概要さえ掴んでおけば方法が変わってもスムーズに実装することが可能です。

テキストファイルの読み込み処理はプログラマーにとって必須知識の1つなので、初心者の方もサンプルコードを参考にご自身の環境で試してみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。