Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
File.ReadAllText() / File.WriteAllText()
テキストファイルの内容を一括で読み込む『File.ReadAllText()』と、テキストを一括で書き込む『File.WriteAllText()』の使い方です。
構文
using System.IO; // ファイルの内容をすべて読み込んで string で返します。 string 内容 = File.ReadAllText(string path); string 内容 = File.ReadAllText(string path, Encoding encoding); // string の内容をファイルに書き込みます(上書き)。 File.WriteAllText(string path, string? contents); File.WriteAllText(string path, string? contents, Encoding encoding); // ファイルの内容を string 配列(1行=1要素)で返します。 string[] 行配列 = File.ReadAllLines(string path); // string 配列を1行ずつファイルに書き込みます(上書き)。 File.WriteAllLines(string path, IEnumerable<string> contents); // ファイルの末尾にテキストを追記します。 File.AppendAllText(string path, string? contents);
メソッド一覧
| メソッド | 概要 |
|---|---|
| File.ReadAllText(path) | テキストファイルを開いて内容をすべて string として返します。デフォルト文字コードは UTF-8 です。 |
| File.WriteAllText(path, contents) | 指定した内容でファイルを作成または上書きします。ファイルが存在しない場合は新規作成します。 |
| File.ReadAllLines(path) | テキストファイルを読み込んで各行を string 配列として返します。 |
| File.WriteAllLines(path, contents) | string の列挙をファイルに 1 行ずつ書き込みます(上書き)。 |
| File.AppendAllText(path, contents) | ファイルの末尾に文字列を追記します。ファイルが存在しない場合は新規作成します。 |
| File.ReadAllBytes(path) | ファイルを読み込んで byte 配列として返します。バイナリファイルに使用します。 |
サンプルコード
using System;
using System.IO;
using System.Text;
string ファイルパス = "sample.txt";
// File.WriteAllText() でファイルを作成します。
string 書き込み内容 = "1行目: Hello, C#\n2行目: ファイルI/O\n3行目: 完了";
File.WriteAllText(ファイルパス, 書き込み内容, Encoding.UTF8);
Console.WriteLine("ファイルを書き込みました。");
// File.ReadAllText() でファイルをすべて読み込みます。
string 読み込み内容 = File.ReadAllText(ファイルパス, Encoding.UTF8);
Console.WriteLine("--- 読み込んだ内容 ---");
Console.WriteLine(読み込み内容);
// File.ReadAllLines() で行単位に分割して読み込みます。
string[] 行配列 = File.ReadAllLines(ファイルパス, Encoding.UTF8);
Console.WriteLine($"行数: {行配列.Length}");
foreach (string 行 in 行配列)
{
Console.WriteLine($" [{行}]");
}
// File.AppendAllText() でファイルに追記します。
File.AppendAllText(ファイルパス, "\n4行目: 追記しました", Encoding.UTF8);
// 追記後の内容を確認します。
string 追記後 = File.ReadAllText(ファイルパス);
Console.WriteLine($"行数(追記後): {File.ReadAllLines(ファイルパス).Length}");
// 後片付けとしてファイルを削除します。
File.Delete(ファイルパス);
Console.WriteLine("ファイルを削除しました。");
概要
『File.ReadAllText()』と『File.WriteAllText()』はファイル全体をメモリに一括展開します。大容量ファイル(数十MB以上)を扱う場合はメモリ不足になる可能性があります。大きなファイルを扱う場合は一行ずつ処理できるStreamReader / StreamWriterの使用を検討してください。
文字コードを省略した場合、.NET 5 以降のデフォルトは UTF-8(BOM なし)です。Shift-JIS など別の文字コードを扱う場合は Encoding.GetEncoding("shift_jis") を指定してください。ファイルの存在確認・削除・コピーについてはFile.Exists() / Delete() / Copy()をご確認ください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。