「配列の要素をファイルに書き出す/読み込む」 を プログラミング初心者向けに、できるだけかみ砕いて、丁寧に解説します。
実用的な 完全コードつき(保存 → 読み込み)、さらに 応用例(2D 配列・CSV) まで載せています。
まず最初に ― Java のファイル読み書きの基本
Java ではファイルに文字を書き込む/読み込むのに次のクラスを使います:
書き出し(保存):
FileWriter(文字を書き込む)BufferedWriter(高速化・便利)
読み込み:
FileReaderBufferedReader
⚠ 整数の配列でも、ファイルに保存するときは 文字列として書き込む のが簡単です。
例1:1次元配列(int[])をファイルに書き出す/読み込む
ステップ1:配列 → ファイルに保存(書き出し)
次の配列を保存してみます:
int[] nums = {10, 20, 30, 40, 50};
Java書き出しコード(完全版)
import java.io.*;
public class WriteArrayExample {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
String filename = "numbers.txt";
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename))) {
for (int i = 0; i < nums.length; i++) {
bw.write(Integer.toString(nums[i])); // 整数 → 文字列へ
bw.newLine(); // 改行
}
System.out.println("ファイルに書き出しました:" + filename);
} catch (IOException e) {
System.out.println("エラーが発生しました");
e.printStackTrace();
}
}
}
Java📄 出力されるファイル(numbers.txt)の中身:
10
20
30
40
50
ステップ2:ファイル → 配列に読み込む
読み込みコード(完全版)
import java.io.*;
import java.util.*;
public class ReadArrayExample {
public static void main(String[] args) {
String filename = "numbers.txt";
List<Integer> list = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = br.readLine()) != null) {
list.add(Integer.parseInt(line)); // 文字列 → 整数へ
}
} catch (IOException e) {
System.out.println("読み込み中にエラーが発生しました");
e.printStackTrace();
}
// List → 配列
int[] nums = list.stream().mapToInt(i -> i).toArray();
// 動作確認
System.out.println("読み込んだ配列:");
for (int n : nums) {
System.out.println(n);
}
}
}
Java📌 ポイント
- ファイルは1行ずつ読む (
readLine()) - 読んだ文字列を
Integer.parseInt()で数値に戻す - 要素数が未知なので、一旦
ArrayListに入れてから配列へ
例2:2次元配列(int[][])を CSV 形式で保存 → 読み込み
CSV(カンマ区切り)にすると、2D 配列も保存しやすく、Excel にも読めるので実用的です。
例として:
int[][] data = {
{1, 2, 3},
{10, 20, 30},
{100, 200, 300}
};
Java書き出し(CSV)
1,2,3
10,20,30
100,200,300
こんな感じで1行ずつ書く。
書き出しコード
import java.io.*;
public class Write2DArrayCSV {
public static void main(String[] args) {
int[][] data = {
{1, 2, 3},
{10, 20, 30},
{100, 200, 300}
};
try (BufferedWriter bw = new BufferedWriter(new FileWriter("data.csv"))) {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
bw.write(Integer.toString(data[i][j]));
if (j < data[i].length - 1) {
bw.write(","); // 区切り
}
}
bw.newLine(); // 行の終わり
}
System.out.println("CSV を書き出しました");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java読み込み(CSV → 2D 配列)
読み込みコード
import java.io.*;
import java.util.*;
public class Read2DArrayCSV {
public static void main(String[] args) {
List<int[]> rows = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader("data.csv"))) {
String line;
while ((line = br.readLine()) != null) {
String[] parts = line.split(","); // カンマで分割
int[] row = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
row[i] = Integer.parseInt(parts[i]);
}
rows.add(row);
}
} catch (IOException e) {
e.printStackTrace();
}
// List<int[]> → int[][]
int[][] data = rows.toArray(new int[0][]);
// 動作確認
System.out.println("読み込んだ2D配列:");
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
System.out.print(data[i][j] + " ");
}
System.out.println();
}
}
}
Javaここまでの注意ポイント(初心者がはまりやすい)
1. Write / Read は try-with-resources を使う:
try (・・・) { } にすると自動でファイルを閉じてくれるので安全。
2. 数値は文字として保存される:
ファイルは基本的に「文字の集まり」。
→ 保存するときは Integer.toString()
→ 読むときは Integer.parseInt() が必要。
3. 改行は非常に重要:
1行が1つの値、または1つの行データを意味する。bw.newLine() を忘れるとすべて1行になってしまう。
4. 数が何個あるか分からないとき:
- いったん List に入れて → 配列に変換する
