2
0

導入

Javaでは、ファイルの読み書きやコンソール入力を簡単に行う方法が用意されています。本記事では、Javaを使ったデータ入出力について、基礎から具体的なコード例までをわかりやすく解説します。

Javaのストリームについて

Javaでは、ストリームを使ってデータを扱います。ストリームはデータの流れを抽象化したもので、大きく分けて以下の2種類があります:

  • 文字ストリーム: テキストデータの読み書きに使います。ReaderWriterクラスを使います。
  • バイトストリーム: バイナリデータ(画像、音声など)の読み書きに使います。InputStreamOutputStreamクラスを使います。

文字ストリームはテキストデータに、バイトストリームはバイナリデータに適しています。

コンソールでのデータ入出力

コンソール(画面)でのデータのやり取りには、標準入力(キーボード入力)、標準出力(画面表示)、標準エラー出力(エラー表示)があります。

キーボードからの入力を読む

キーボードからの入力は、Scannerクラスを使うのが一般的です。

import java.util.Scanner;

public class SampleIO {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("名前を入力してください: ");
        String name = scanner.nextLine();
        System.out.println("こんにちは、" + name + "さん!");
        
        scanner.close();
    }
}

この例では、Scannerを使ってキーボード入力を取得し、それを画面に表示しています。

画面に文字を出力する

画面に文字を出すには、System.outを使います。これはPrintStreamというオブジェクトで、様々な形式で出力できます。

public class SampleConsoleOutput {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        System.out.printf("私の年齢は %d 歳です。\n", 30);
    }
}

System.out.printlnは指定した文字を改行付きで出力し、System.out.printfはフォーマット指定子を使って出力します。

エラーメッセージを出す

エラーメッセージはSystem.errを使います。System.errPrintStreamのオブジェクトです。

public class SampleConsoleError {
    public static void main(String[] args) {
        System.err.println("エラー: システムでエラーが発生しました。");
    }
}

エラーメッセージを表示する際に便利です。

ファイルの入出力

ファイルの読み書きには、文字ストリームとバイトストリームを使う方法があります。ここではその方法を紹介します。

ファイルからデータを読む

ファイルからデータを読むには、FileReader(文字ストリーム)またはFileInputStream(バイトストリーム)を使います。例として、BufferedReaderを使ってファイルを行ごとに読む方法を示します。

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

public class SampleFileRead {
    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("java.txt"));
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

BufferedReaderを使うと、ファイルの内容を効率よく読み取れます。

ファイルにデータを書く

ファイルにデータを書くには、FileWriter(文字ストリーム)またはFileOutputStream(バイトストリーム)を使います。ここでは、BufferedWriterを使って文字をファイルに書く例を示します。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class SampleFileWrite {
    public static void main(String[] args) {
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter("out-java.txt"));
            bw.write("メッセージです。");
            bw.newLine();
            bw.write("Javaによってテキストを出力します。");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bw != null) {
                try {
                    bw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

BufferedWriterを使うと、効率的に文字データを書き込めます。

Filesクラスを使ったファイル操作(Java 7以降)

Java 7以降では、Filesクラスを使うと簡単にファイル操作ができます。

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

public class SampleFiles {
    public static void main(String[] args) {
        // ファイルにデータを書く
        try {
            Files.write(Paths.get("file-output.txt"), "ファイルです。\n2行目の内容です。".getBytes(), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // ファイルからデータを読む
        try {
            List<String> lines = Files.readAllLines(Paths.get("file-output.txt"));
            lines.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Files.writeは文字列のバイト配列をファイルに書き込み、Files.readAllLinesはファイルの全行をリストとして読み込みます。

終わりに

この記事では、Javaを使ったコンソールやファイルの入出力について説明しました。

  • コンソール入出力: ScannerSystem.outSystem.errを使います。
  • ファイルの入出力: FileReaderFileWriterBufferedReaderBufferedWriter、およびFilesクラスを使います。
  • 例外処理: 入出力操作中のエラーをtry-catchで処理します。

これらの基本を押さえることで、実用的なJavaアプリケーションのデータ処理ができるようになります。

2
0
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
2
0