Javaプログラミングにおいて、ファイル入出力(I/O)はデータを保存したり読み込んだりするために欠かせないスキルです。テキストファイルやバイナリファイルを操作する方法を理解することで、実用的なアプリケーション開発に役立てられます。本記事では、初心者でも理解しやすいように、Javaでのファイル入出力の基本から応用までを徹底解説します。
目次
- ファイル入出力とは?
- ファイルの読み込み方法
- ファイルへの書き込み方法
- 既存ファイルへの追記
- バイナリファイルの扱い方
- 文字コードを指定して入出力する方法
- Javaプログラマーを目指す方へのアドバイス
1. ファイル入出力とは?
ファイル入出力(I/O)とは、ファイルを通じてデータをやり取りすることを指します。例えば、以下のような操作を行う際に必要になります:
- テキストデータを保存する(例:ユーザー設定の保存)
- 保存済みデータを読み込む(例:ログファイルの解析)
- 画像や音声ファイルをコピーする
Javaでは、java.ioパッケージに用意されているクラスを使用してファイルの入出力を行います。以下はよく使用されるクラスです:
File:ファイルやディレクトリの管理FileReader/BufferedReader:テキストファイルの読み込みFileWriter/BufferedWriter:テキストファイルへの書き込みFileInputStream/FileOutputStream:バイナリファイルの読み書き
2. ファイルの読み込み方法
テキストファイルを読み込むには、BufferedReaderを使用するのがおすすめです。以下のサンプルコードをご覧ください:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
String filePath = "example.txt"; // 読み込むファイルのパス
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); // 読み込んだ行を出力
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
解説
BufferedReader:効率的にファイルを読み込むために使用します。readLineメソッド:1行ずつデータを読み込むことができます。try-with-resources:リソースを自動解放する構文です。
3. ファイルへの書き込み方法
テキストデータを書き込むには、BufferedWriterを使用します。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
String filePath = "output.txt"; // 書き込むファイルのパス
String content = "こんにちは、Javaプログラミング!"; // 書き込む内容
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
bw.write(content);
bw.newLine(); // 改行を追加
bw.write("ファイル入出力の例です。");
} catch (IOException e) {
e.printStackTrace();
}
}
}
解説
newLineメソッド:改行を追加するために使用します。FileWriter:ファイルへの書き込みを行いますが、大量データの場合はBufferedWriterと組み合わせることで効率化できます。
4. 既存ファイルへの追記
既存のファイルにデータを追記したい場合、FileWriterの第2引数にtrueを指定します。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileAppendExample {
public static void main(String[] args) {
String filePath = "output.txt"; // 書き込むファイルのパス
String content = "追記データです。";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath, true))) {
bw.write(content);
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}
解説
- 追記モード:第2引数に
trueを設定することで、既存データを保持しながら新しいデータを追加できます。
5. バイナリファイルの扱い方
画像や音声などのバイナリデータを扱う場合は、FileInputStreamとFileOutputStreamを使用します。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BinaryFileExample {
public static void main(String[] args) {
String sourcePath = "source.jpg"; // コピー元のファイル
String destPath = "copy.jpg"; // コピー先のファイル
try (FileInputStream fis = new FileInputStream(sourcePath);
FileOutputStream fos = new FileOutputStream(destPath)) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
解説
- バッファ:データを一度に読み書きするために使用します。
- バイト配列:データを効率的に操作できます。
6. 文字コードを指定して入出力する方法
デフォルトの文字コードではなく、特定の文字コードを指定する場合は、InputStreamReaderとOutputStreamWriterを使います。
import java.io.*;
public class EncodingExample {
public static void main(String[] args) {
String filePath = "output_utf8.txt";
String content = "UTF-8で書き込んだテキスト";
try (OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(filePath), "UTF-8")) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
解説
- 文字コード指定:
"UTF-8"などの文字コードを指定して、国際化対応が可能です。
7. Javaプログラマーを目指す方へのアドバイス
ファイル入出力はJavaプログラミングの基本ですが、実際の開発ではデータベースやAPIと連携するケースが増えます。そのため、基礎をしっかり押さえた後は、以下のリソースを活用してスキルアップを図りましょう:
- 書籍で学ぶ:まずは「絶対にJavaプログラマーになりたい人へ。」を参考にし、ファイル操作の基本をマスターしてください。
- 転職を目指すなら:サイゼントアカデミーでプログラミングの実践力を磨き、プロのサポートを受けましょう。
まとめ
Javaでのファイル入出力は、初心者でも扱いやすい機能が豊富です。本記事で紹介した方法を参考にして、ぜひ実際のプロジェクトで活用してみてください!


コメント