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

1. 標準入力と標準出力
Javaで最も基本的なI/Oは、コンソールへの出力(標準出力)と、ユーザーからの入力(標準入力)です。
標準出力
標準出力を行うためには、System.out
オブジェクトを使用します。このオブジェクトには、データを出力するためのprint()
およびprintln()
メソッドがあります。
-
print() メソッド: 引数として与えたデータを表示しますが、改行は行いません。
-
println() メソッド: 引数として与えたデータを表示し、最後に改行を追加します。
javapublic class Main {
public static void main(String[] args) {
System.out.print("Hello, ");
System.out.println("World!");
}
}
このコードを実行すると、出力は次のようになります:
Hello, World!
標準入力
標準入力を受け取るには、Scanner
クラスを使用します。Scanner
はユーザーから入力を受け取るための便利なクラスで、java.util
パッケージに含まれています。Scanner
を使うことで、文字列や整数など、さまざまな型の入力を簡単に処理できます。
javaimport 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
クラスやFileReader
、FileWriter
、BufferedReader
、BufferedWriter
などのクラスを使用します。
ファイルへの書き込み
ファイルにデータを書き込むためには、FileWriter
クラスを使用します。FileWriter
は、指定したファイルに文字を書き込むことができるクラスです。ここでは、ファイルにテキストを書き込む例を示します。
javaimport 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
というファイルに指定されたテキストを記録します。
ファイルの読み込み
ファイルを読み込むためには、FileReader
やBufferedReader
クラスを使用します。BufferedReader
を使用すると、大きなファイルを効率よく読み取ることができます。
javaimport 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では、テキストファイルだけでなく、バイナリファイル(画像や音声など)を扱うこともできます。そのためには、FileInputStream
やFileOutputStream
クラスを使用します。
javaimport 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());
}
}
}
このコードは、画像ファイルをコピーする例です。FileInputStream
とFileOutputStream
を使って、バイナリデータを1バイトずつ読み書きしています。
4. 入出力の効率化
ファイルの読み書きには、BufferedReader
やBufferedWriter
を使用することで、パフォーマンスを向上させることができます。これらのクラスは、データをバッファリングすることによって、I/O操作の回数を減らし、効率的にデータを処理します。
javaimport 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());
}
}
}
このコードは、BufferedReader
とBufferedWriter
を使って、テキストファイルを効率よくコピーします。
5. 結論
Javaにおける入力と出力は、標準入力・出力の基本的な操作から、ファイルやバイナリデータの扱いまで多岐にわたります。ユーザーからの入力を受け取るためにはScanner
クラスを使用し、コンソールにデータを出力するにはSystem.out
を使います。さらに、ファイル操作では、FileWriter
やFileReader
、BufferedReader
、BufferedWriter
などを活用することで、効率的なI/O処理が可能となります。
Javaを使ったI/O操作の習得は、データ処理やファイル管理のアプリケーションを開発する際に欠かせないスキルです。