プログラミング

Java 入出力完全ガイド

Javaにおける入力と出力の完全ガイド

Javaプログラミングにおいて、入力と出力(I/O)は非常に重要な概念です。データをコンソールに表示したり、ユーザーから入力を受け取ったりする場面は、ほとんどすべてのプログラムで発生します。このガイドでは、Javaにおける標準的な入力と出力の方法、さらにファイル操作などの高度なI/O技術についても説明します。

1. 標準入力と標準出力

Javaで最も基本的なI/Oは、コンソールへの出力(標準出力)と、ユーザーからの入力(標準入力)です。

標準出力

標準出力を行うためには、System.outオブジェクトを使用します。このオブジェクトには、データを出力するためのprint()およびprintln()メソッドがあります。

  • print() メソッド: 引数として与えたデータを表示しますが、改行は行いません。

  • println() メソッド: 引数として与えたデータを表示し、最後に改行を追加します。

java
public class Main { public static void main(String[] args) { System.out.print("Hello, "); System.out.println("World!"); } }

このコードを実行すると、出力は次のようになります:

Hello, World!

標準入力

標準入力を受け取るには、Scannerクラスを使用します。Scannerはユーザーから入力を受け取るための便利なクラスで、java.utilパッケージに含まれています。Scannerを使うことで、文字列や整数など、さまざまな型の入力を簡単に処理できます。

java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scannerオブジェクトを作成 System.out.print("名前を入力してください: "); String name = scanner.nextLine(); // ユーザーからの文字列入力を受け取る System.out.println("こんにちは、" + name + "!"); scanner.close(); // Scannerを閉じる } }

このコードは、ユーザーに名前を入力させ、その名前を使って挨拶を表示します。

makefile
名前を入力してください: 太郎 こんにちは、太郎!

2. ファイルの入出力

Javaでは、ファイルの読み書きもよく行います。ファイル操作を行うためには、FileクラスやFileReaderFileWriterBufferedReaderBufferedWriterなどのクラスを使用します。

ファイルへの書き込み

ファイルにデータを書き込むためには、FileWriterクラスを使用します。FileWriterは、指定したファイルに文字を書き込むことができるクラスです。ここでは、ファイルにテキストを書き込む例を示します。

java
import java.io.FileWriter; import java.io.IOException; public class FileOutput { public static void main(String[] args) { try { FileWriter writer = new FileWriter("output.txt"); writer.write("こんにちは、ファイルへ書き込みました。"); writer.close(); // ファイルを閉じる System.out.println("データがファイルに書き込まれました。"); } catch (IOException e) { System.out.println("エラーが発生しました: " + e.getMessage()); } } }

このコードは、output.txtというファイルに指定されたテキストを記録します。

ファイルの読み込み

ファイルを読み込むためには、FileReaderBufferedReaderクラスを使用します。BufferedReaderを使用すると、大きなファイルを効率よく読み取ることができます。

java
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class FileInput { public static void main(String[] args) { try { BufferedReader reader = new BufferedReader(new FileReader("output.txt")); String line; while ((line = reader.readLine()) != null) { System.out.println(line); // ファイルの内容を行単位で出力 } reader.close(); // ファイルを閉じる } catch (IOException e) { System.out.println("エラーが発生しました: " + e.getMessage()); } } }

このコードは、output.txtファイルの内容を1行ずつ読み取ってコンソールに表示します。

3. 高度な入出力操作

バイナリファイルの入出力

Javaでは、テキストファイルだけでなく、バイナリファイル(画像や音声など)を扱うこともできます。そのためには、FileInputStreamFileOutputStreamクラスを使用します。

java
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class BinaryFileIO { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("image.jpg"); FileOutputStream fos = new FileOutputStream("copy_image.jpg"); int byteData; while ((byteData = fis.read()) != -1) { fos.write(byteData); } fis.close(); fos.close(); System.out.println("バイナリファイルがコピーされました。"); } catch (IOException e) { System.out.println("エラーが発生しました: " + e.getMessage()); } } }

このコードは、画像ファイルをコピーする例です。FileInputStreamFileOutputStreamを使って、バイナリデータを1バイトずつ読み書きしています。

4. 入出力の効率化

ファイルの読み書きには、BufferedReaderBufferedWriterを使用することで、パフォーマンスを向上させることができます。これらのクラスは、データをバッファリングすることによって、I/O操作の回数を減らし、効率的にデータを処理します。

java
import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; public class BufferedFileIO { 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(); // 改行を追加 } reader.close(); writer.close(); System.out.println("バッファリングを使用してファイルをコピーしました。"); } catch (IOException e) { System.out.println("エラーが発生しました: " + e.getMessage()); } } }

このコードは、BufferedReaderBufferedWriterを使って、テキストファイルを効率よくコピーします。

5. 結論

Javaにおける入力と出力は、標準入力・出力の基本的な操作から、ファイルやバイナリデータの扱いまで多岐にわたります。ユーザーからの入力を受け取るためにはScannerクラスを使用し、コンソールにデータを出力するにはSystem.outを使います。さらに、ファイル操作では、FileWriterFileReaderBufferedReaderBufferedWriterなどを活用することで、効率的なI/O処理が可能となります。

Javaを使ったI/O操作の習得は、データ処理やファイル管理のアプリケーションを開発する際に欠かせないスキルです。

Back to top button