0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Silver確実合格を目指すカレンダーAdvent Calendar 2024

Day 24

【Java】入出力についてざっくり

Last updated at Posted at 2024-12-23

Javaの入出力(I/O)の基本的な概念

バイトストリーム

バイナリデータの読み書きに使用される。InputStreamOutputStreamが基底クラス。
主なクラスとインタフェースは以下。
FileInputStream/FileOutputStream
ファイルをバイナリで読み書きするためのストリーム。

BufferedInputStream/BufferedOutputStream
バッファリングを行うことでI/O効率を向上させる。

DataInputStream/DataOutputStream
データストリームで、プリミティブ型のデータを扱うためのストリーム。

DataInputStream/DataOutputStream

文字ストリーム

テキストデータの読み書きに使用される。ReaderWriterが基底クラス。
主なクラスとインタフェースは以下。

FileReader/FileWriter
テキストファイルを読み書きするためのストリーム。

ObjectInputStream/ObjectOutputStream
オブジェクトのシリアライズとデシリアライズを行うためのクラス。

シリアライズとデシリアライズ
シリアライズ: オブジェクトを保存・転送可能なバイナリ形式に変換するプロセス。
デシリアライズ: 保存・転送されたバイナリ形式のデータを元のオブジェクトに復元するプロセス。

I/Oの基本的な操作

ファイルの読み込み

BufferedReaderは、ファイルから行単位でテキストを読み込むために使用される。

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

public class FileReadExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ファイルへの書き込み

BufferedWriterを使って、テキストをファイルに書き込むことができる。

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

public class FileWriteExample {
    public static void main(String[] args) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
            writer.write("Hello, World!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

エラーハンドリングの必要性

I/O操作は多くの例外を投げる可能性があり、特にIOExceptionは頻繁に例外が発生するため、例外処理が非常に大事になる。

標準入力と標準出力

標準入力標準出力を使ってコンソールでデータをやり取りできる。

標準入力

System.inを利用して、ユーザーからの入力を取得。
Scannerクラスを使うと便利。

import java.util.Scanner;

public class StandardInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("名前を入力してください:");
        String name = scanner.nextLine();
        System.out.println("こんにちは、" + name + "さん!");
    }
}

標準出力

System.outを利用してデータを表示。
System.out.printfを使うとフォーマット指定が可能。

public class StandardOutputExample {
    public static void main(String[] args) {
        int age = 25;
        System.out.printf("年齢: %d歳\n", age);
    }
}

リソースの自動解放

Java7以降ではtry-with-resourcesを使用してI/Oリソースを自動的に解放できる。

import java.io.*;

public class TryWithResourcesExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("input.txt"));
             BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {

            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?