既存のテキストファイルの末尾に、新しい行データを追加したい場合は System.IO.File.AppendAllLines メソッドを使用します。
このメソッドは、指定したファイルが存在しない場合は自動的に新規作成し、存在する場合は元のデータを消さずに、その続きからデータを書き込みます。
目次
実装サンプル:ログデータの追記
以下のコードでは、操作ログを記録するファイル(operation.log)に対して、新しいログ情報を追記しています。
サンプルコード
using System;
using System.IO;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// 追記したいデータ(文字列の配列)
string[] newLogs = new string[]
{
"[2025-01-07 14:00] サーバー接続開始",
"[2025-01-07 14:01] データの同期完了",
"[2025-01-07 14:02] 処理終了"
};
// 対象のファイルパス
string filePath = "operation.log";
try
{
Console.WriteLine("ログを追記します...");
// File.AppendAllLines(ファイルパス, 追加データ)
// 配列の各要素を、それぞれ新しい行としてファイルの末尾に追加します
File.AppendAllLines(filePath, newLogs);
Console.WriteLine("追記が完了しました。");
// (確認用) ファイルの中身をすべて表示
Console.WriteLine("\n--- 現在のファイル内容 ---");
string currentContent = File.ReadAllText(filePath);
Console.WriteLine(currentContent);
}
catch (Exception ex)
{
Console.WriteLine("エラーが発生しました: " + ex.Message);
}
}
}
実行結果(ファイルが元々空だった場合)
ログを追記します...
追記が完了しました。
--- 現在のファイル内容 ---
[2025-01-07 14:00] サーバー接続開始
[2025-01-07 14:01] データの同期完了
[2025-01-07 14:02] 処理終了
※このプログラムをもう一度実行すると、同じ内容がさらに下に追記されます。
解説
File.AppendAllLines の特徴
- 自動改行: 渡されたコレクション(配列やList)の要素ごとに、自動的に改行コードを挟んで書き込みます。自分で
\nを連結する必要はありません。 - ファイルがない場合の動作: 指定したパスにファイルが存在しなければ、エラーにはならず、新しいファイルを作成して書き込みます。
- 引数の型: 第2引数には
string[](配列)だけでなく、List<string>やIEnumerable<string>を渡すことができます。
このメソッドは、ログの記録や、データの蓄積といった「履歴を残す」処理の実装において非常に効率的です。
