0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FileInputStreamでファイルを読み込む方法【Java】

Posted at

Javaにはファイルの読み込みを行うFileInputStreamクラスがある。
・FileInputStreamクラスとは
・FileInputStreamクラスの使い方
・FileInputStreamクラスのreadメソッド

という基本的な内容から、

・バイトストリームから文字に変換する方法
・文字エンコードをUTF-8などに指定する方法

「FileInputStream」クラスとは

FileInputStreamクラスはファイルを読み込み、ファイルの内容を元にした処理や、新しいファイルの作成などを行うために使う。
FileInputStreamクラスを使うと、ファイルは「バイトストリーム」で読み込まれる。
※文字ストリームで読み込みたい場合は「FileReader」クラスを使用すること。

「ファイルをバイトストリームで読み込む」方法

初めにFileInputStreamクラスのコンストラクタの引数に読み込む「ファイルのパス」を指定。
次にInputStreamReaderクラスのコンストラクタの引数に「文字エンコードを指定」。
※文字エンコードの指定を間違えると正しく読み込めないので注意。

ファイルは「readメソッド」を使って、データを1バイトずつ読み込む。
readメソッドの戻り値はint型で、データの次のバイトを返す。
ファイルの終わりに達した場合は-1を返す。

Main.java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws Exception {
        
        // テキストファイルの内容は”abc”です。
        try (FileInputStream fIStream= new FileInputStream("c:\\Test.txt")) {
            InputStreamReader iSReader = new InputStreamReader(fIStream, "UTF-8");
         
            int data;
            while ((data = iSReader.read()) != -1) {
                System.out.println(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
//実行結果
97
98
99

このプログラムではテキストファイルをUTF-8で読み込んで、その内容を1バイトずつ表示している。
実行結果にはテキストファイルの内容の”abc”が文字コードで表示される。

読み込みが終わったら、closeメソッドを使用してファイルのリソースを閉じる必要があるので忘れないようにすること。
このプログラムではcloseメソッドの代わりにJava7から追加されたtry-with-resources文でリソースを閉じている。
try-with-resources文を使うには、try文を抜けたときにcloseしたいリソースを、try文の直後の括弧の中に記述。

「バイトストリームから文字に変換する」方法

テキストファイルを読み込んだ場合、そのままではバイトの数値が表示されるので、読めるように文字に変換する必要がある。
バイトの数値を文字に変えるには、char型にキャストするだけでOK。

Main.java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws Exception {
        
        // テキストファイルの内容は”abc”です。
        try (FileInputStream fIStream= new FileInputStream("c:\\Test.txt")) {
            InputStreamReader iSReader = new InputStreamReader(fIStream, "UTF-8");
         
            int data;
            while ((data = iSReader.read()) != -1) {
                System.out.println(data);
                System.out.println((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
//実行結果
97
a
98
b
99
c

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?