Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Javaでプログラムを作成する際、外部のファイルを読み込んで何かしらの処理を行いたい機会はよくあります。

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

JavaのFilesクラスでファイルを読み込む


Javaでは、古くからjava.ioパッケージのFileクラスがファイル操作に利用されるクラスとして一般的でしたが、Java1.7より高度なファイル操作が行える「Files」クラスが提供されるようになりました。

Java11以降では、FilesクラスのreadStringメソッドを使用することで、簡単にファイルを読み込んでStringクラスへ代入することが可能です。

サンプル

サンプルでは「Main.java」からプロジェクトルートに配置した「test.txt」ファイルの中身を読み込み、コンソールに出力します。

Main.java

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

public class Main {
	
	public static void main(String[] args) {
		
		Path path = Paths.get("test.txt");
		    
		try {
			String content = Files.readString(path);
			System.out.println(content);
		} catch(IOException ex) {
			ex.printStackTrace();
		}
	}
}

test.txt

あいうえお
かきくけこ
さしすせそ

このサンプルを実行すると、test.txtの内容がコンソールへ出力されます。

解説

readStringメソッドの使い方は非常にシンプルで、Pathクラスに設定したファイルをメソッドの引数として設定することで、String型としてファイルの中身を取得することが可能です。

サンプルの場合、10行目がPathクラスへプロジェクトルートに配置した「test.txt」ファイルを読み込ませる処理で、13行目でreadStringメソッドによりファイル内容を読み込み14行目のコンソール出力処理へ繋げています。

JavaのFileReaderクラスでファイルを読み込む


Javaでファイルを読むこむ際、よく利用される方法の2つ目はFileReaderクラスを利用する方法です。

FileReaderクラスだけでも読み込むことは出来ますが、BufferedReaderクラスと併用する方法が一般的です。

ポテパンダの一言メモ

FileReaderでは、readメソッドでファイル内容を1文字ずつ読み込む方法が提供されていますが、BufferedReaderクラスのreadLineメソッドを利用することで1行ずつ読み込むことが可能となります。

サンプル

Filesクラスで掲載したサンプルをFileReaderクラスを利用した処理に書き換えたのが下記のサンプルです。

今回のサンプルではBufferedReaderクラスと組み合わせて1行ずつ読み込みを行っています。

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) {
		
		try {
			File file = new File("test.txt");
			
			if (file.exists()) {
				FileReader fr = new FileReader(file);
				BufferedReader br = new BufferedReader(fr);
				String content;
				while ((content = br.readLine()) != null) {
					System.out.println(content);
				}
				br.close();
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

Filesクラスでファイルを読み込んだ際と同様に、プロジェクトルートに「test.txt」を配置しておくと、ファイル内容がコンソールに出力されます。

解説

FileReaderクラスで読み込む際、引数としてFileクラスのオブジェクトを指定する必要があるため、11行目でFileクラスでテキストファイルのパスを指定しています。

14・15行目ではFileReaderクラスのオブジェクトを作成した後、BufferedReaderクラスのオブジェクトに変換しています。

17行目から19行目のループ処理が、ファイルの行が空になるまでコンソールに出力する処理です。

ポテパンダの一言メモ

ファイルが存在しなかった場合エラーとなるため、13行目のようにファイルの存在チェックが必要となります。

JavaのFileInputStreamクラスでファイルを読み込む


FileInputStreamでは、バイトデータを読み込むことが可能で、テキストファイルを読み込むことも可能です。

FileInputStreamを使うことで、読み込む際の文字コードを指定することも出来るので試してみましょう。

サンプル

サンプルでは、上記サンプルでも使っていた「test.txt」ファイルを「SJIS」形式で読み込んでみます。

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static void main(String[] args) {
		
		try {
			FileInputStream fis = new FileInputStream("test.txt");
			BufferedReader bf = new BufferedReader(new InputStreamReader(fis, "SJIS"));
			String content;
		    while((content = bf.readLine()) != null) {
			    System.out.println(content);
			}
		    bf.close();
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

サンプルコードを実行すると、コンソールウィンドウにSJIS変換した影響で、文字化けした状態で出力されます。

解説

11行目のFileInputStreamでまず読み込みたいファイルパスを指定します。

12行目では、今回InputStreamReaderを利用してSJIS指定したファイルの内容を、そのままBufferedReaderクラスのオブジェクトとして変換しています。

これにより14行目のループ処理でreadLineメソッドを利用して、1行ずつファイルから取得した内容をコンソールへと出力出来る仕組みです。

さいごに: Javaでファイル読み込み処理は簡単に実装出来る


本記事では、Javaでのファイル読み込みに関して、3つのクラスを利用した方法をサンプルコードを掲載しながらご紹介してきました。

どのクラスを利用する場合でも基本的な流れは同じです。

ファイル読み込みの処理全体の流れをしっかりと把握し、それぞれのクラスを利用出来るように試してみてください。

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

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

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

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

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

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

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

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

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

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

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