C#でテキスト出力する方法|Console・ファイル書き込み・改行まで初心者向けに解説
はじめに
C#でプログラムを作るとき、最初に覚えておきたい基本処理のひとつが「テキスト出力」です。
テキスト出力とは、文字や数値などのデータを画面に表示したり、テキストファイルに書き込んだりする処理のことです。たとえば、次のような場面で使います。
プログラムの実行結果を画面に表示する、ユーザーが入力した内容を確認する、ログをファイルに保存する、処理結果をテキストファイルとして出力するなど、C#ではさまざまな場面でテキスト出力が必要になります。
この記事では、C#でテキスト出力する方法を初心者向けに解説します。Consoleを使って画面に表示する方法、ファイルに書き込む方法、改行の扱い、文字コードの指定、よくあるエラーの対処法まで、サンプルコード付きで順番に見ていきましょう。
1. C#でテキスト出力する基本
1-1. テキスト出力とは何か
テキスト出力とは、プログラム内の文字列や数値などを、人が読める形で外部に出す処理のことです。
C#では、主に次のようなデータをテキストとして出力できます。
C#"こんにちは"
"Hello World"
123
3.14
DateTime.Now
文字列だけでなく、数値や日時、変数に入っている値もテキストとして出力できます。
たとえば、次のコードでは「こんにちは」と画面に表示されます。
C#Console.WriteLine("こんにちは");
このように、プログラムの実行結果を確認するためにも、テキスト出力はとても重要です。
1-2. C#でよく使う出力先の種類
C#でテキストを出力する先には、主に次のような種類があります。
画面に出力する場合は、Console.WriteLineやConsole.Writeを使います。これはコンソールアプリでよく使われる方法です。
ファイルに出力する場合は、File.WriteAllText、File.AppendAllText、StreamWriterなどを使います。ログファイルや設定ファイル、処理結果の保存などで利用します。
デバッグ用に出力する場合は、Debug.WriteLineを使うこともあります。ただし、この記事では初心者が最初に覚えるべきConsole出力とファイル出力を中心に解説します。
1-3. 初心者がまず覚えるべき3つの出力方法
C#初心者がまず覚えておきたいテキスト出力の方法は、次の3つです。
1つ目は、Console.WriteLineです。文字列を画面に表示し、最後に自動で改行してくれます。
C#Console.WriteLine("こんにちは");
2つ目は、Console.Writeです。文字列を画面に表示しますが、最後に改行しません。
C#Console.Write("こんにちは");
3つ目は、File.WriteAllTextです。文字列をテキストファイルに書き込むときに使います。
C#File.WriteAllText("sample.txt", "こんにちは");
まずはこの3つを理解すれば、C#の基本的なテキスト出力はかなり扱いやすくなります。
2. Consoleで画面にテキスト出力する方法
2-1. Console.WriteLineで文字列を出力する
C#で画面にテキストを出力するとき、もっともよく使うのがConsole.WriteLineです。
C#Console.WriteLine("Hello World");
実行結果は次のようになります。
Hello World
Console.WriteLineは、指定した文字列を表示したあとに自動で改行します。そのため、複数回使うと1行ずつ表示されます。
C#Console.WriteLine("1行目");
Console.WriteLine("2行目");
Console.WriteLine("3行目");
実行結果は次のとおりです。
1行目
2行目
3行目
初心者が最初に使うテキスト出力としては、Console.WriteLineを覚えておけば問題ありません。
2-2. Console.Writeで改行せずに出力する
Console.Writeは、テキストを出力しても最後に改行しません。
C#Console.Write("こんにちは");
Console.Write("C#");
実行結果は次のようになります。
こんにちはC#
Console.WriteLineとの違いは、出力後に改行されるかどうかです。
C#Console.Write("名前を入力してください:");
このように、ユーザー入力を受け取る前のメッセージとして使うことがよくあります。
C#Console.Write("名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine("こんにちは、" + name + "さん");
このコードでは、入力欄を同じ行に表示できるため、自然な見た目になります。
2-3. 変数の値をテキストとして出力する
C#では、変数に入っている値もテキストとして出力できます。
C#string name = "太郎";
int age = 20;
Console.WriteLine(name);
Console.WriteLine(age);
実行結果は次のようになります。
太郎
20
文字列と変数をつなげて出力することもできます。
C#string name = "太郎";
int age = 20;
Console.WriteLine("名前は" + name + "です。");
Console.WriteLine("年齢は" + age + "歳です。");
実行結果は次のとおりです。
名前は太郎です。
年齢は20歳です。
+を使うことで、文字列と変数の値を連結して出力できます。
2-4. 文字列補間を使って見やすく出力する
C#では、文字列補間を使うと、変数の値をわかりやすく出力できます。
文字列補間は、文字列の前に$を付け、変数を{}の中に書く方法です。
C#string name = "太郎";
int age = 20;
Console.WriteLine($"名前は{name}です。");
Console.WriteLine($"年齢は{age}歳です。");
実行結果は次のようになります。
名前は太郎です。
年齢は20歳です。
文字列補間を使うと、+で文字列をつなげるよりもコードが読みやすくなります。
たとえば、複数の変数を出力する場合もすっきり書けます。
C#string product = "ノート";
int price = 150;
int count = 3;
Console.WriteLine($"{product}を{count}冊購入しました。合計金額は{price * count}円です。");
実行結果は次のとおりです。
ノートを3冊購入しました。合計金額は450円です。
初心者でも読みやすく、実務でもよく使われる書き方なので、早めに覚えておくと便利です。
2-5. Console出力のサンプルコード
ここまでの内容をまとめたConsole出力のサンプルコードを見てみましょう。
C#using System;
class Program
{
static void Main()
{
string name = "花子";
int age = 25;
Console.WriteLine("C#のテキスト出力サンプル");
Console.WriteLine("--------------------");
Console.WriteLine("Console.WriteLineは改行ありで出力します。");
Console.Write("Console.Writeは");
Console.Write("改行せずに出力します。");
Console.WriteLine();
Console.WriteLine($"名前:{name}");
Console.WriteLine($"年齢:{age}");
Console.WriteLine($"{name}さんは{age}歳です。");
}
}
実行結果は次のようになります。
C#のテキスト出力サンプル
--------------------
Console.WriteLineは改行ありで出力します。
Console.Writeは改行せずに出力します。
名前:花子
年齢:25
花子さんは25歳です。
Console.WriteLine()のように中身を空にすると、空行を出力できます。改行だけを入れたいときに便利です。
3. C#で改行を含めてテキスト出力する方法
3-1. WriteLineで自動的に改行する
C#で改行を含めてテキスト出力するもっとも簡単な方法は、Console.WriteLineを使うことです。
C#Console.WriteLine("おはようございます");
Console.WriteLine("こんにちは");
Console.WriteLine("こんばんは");
実行結果は次のようになります。
おはようございます
こんにちは
こんばんは
WriteLineは、出力したあとに自動で改行してくれるため、1行ずつ表示したい場合に向いています。
ファイル出力でも、StreamWriter.WriteLineを使えば同じように改行付きで書き込めます。
C#using StreamWriter writer = new StreamWriter("sample.txt");
writer.WriteLine("1行目");
writer.WriteLine("2行目");
writer.WriteLine("3行目");
このように、Consoleでもファイルでも、WriteLineは「1行出力する」ための基本的なメソッドです。
3-2. \nを使って改行する
文字列の中に\nを書くことで、改行を表すこともできます。
C#Console.WriteLine("1行目\n2行目\n3行目");
実行結果は次のとおりです。
1行目
2行目
3行目
\nは改行を表すエスケープシーケンスです。
次のように、変数に複数行の文字列を入れることもできます。
C#string message = "商品名:ノート\n価格:150円\n数量:3冊";
Console.WriteLine(message);
実行結果は次のようになります。
商品名:ノート
価格:150円
数量:3冊
ただし、Windows、macOS、Linuxでは改行コードの扱いが異なる場合があります。単純なConsole出力では\nでも問題ないことが多いですが、ファイル出力では次に紹介するEnvironment.NewLineを使うとより安全です。
3-3. Environment.NewLineを使って改行する
Environment.NewLineは、実行環境に合わせた改行文字を取得できるプロパティです。
C#string text = "1行目" + Environment.NewLine + "2行目";
Console.WriteLine(text);
実行結果は次のようになります。
1行目
2行目
Environment.NewLineを使うと、OSに合った改行コードを使えるため、テキストファイルを出力するときにも便利です。
文字列補間と組み合わせることもできます。
C#string name = "太郎";
int score = 85;
string result = $"名前:{name}{Environment.NewLine}点数:{score}";
Console.WriteLine(result);
実行結果は次のとおりです。
名前:太郎
点数:85
改行を明示的に扱いたい場合は、Environment.NewLineを使う書き方を覚えておきましょう。
3-4. 複数行のテキストを出力するサンプル
複数行のテキストをConsoleに出力するサンプルです。
C#using System;
class Program
{
static void Main()
{
string title = "購入明細";
string item = "ボールペン";
int price = 120;
int count = 5;
string output =
title + Environment.NewLine +
"----------------" + Environment.NewLine +
$"商品名:{item}" + Environment.NewLine +
$"単価:{price}円" + Environment.NewLine +
$"数量:{count}個" + Environment.NewLine +
$"合計:{price * count}円";
Console.WriteLine(output);
}
}
実行結果は次のようになります。
購入明細
----------------
商品名:ボールペン
単価:120円
数量:5個
合計:600円
C#では、改行を含むテキストを作ってから出力することも、1行ずつWriteLineで出力することもできます。短い処理ならWriteLine、文字列としてまとめて扱いたい場合はEnvironment.NewLineを使うとよいでしょう。
4. C#でテキストファイルに出力する方法
4-1. File.WriteAllTextでファイルに書き込む
C#でテキストファイルに出力するもっとも簡単な方法は、File.WriteAllTextを使うことです。
C#File.WriteAllText("sample.txt", "こんにちは");
このコードを実行すると、sample.txtというファイルが作成され、その中に「こんにちは」と書き込まれます。
File.WriteAllTextを使うには、System.IO名前空間を読み込むのが一般的です。
C#using System;
using System.IO;
class Program
{
static void Main()
{
File.WriteAllText("sample.txt", "C#でテキスト出力しました。");
Console.WriteLine("ファイルに出力しました。");
}
}
実行後、プログラムの実行フォルダにsample.txtが作成されます。
注意点として、File.WriteAllTextは既存のファイルがある場合、その内容を上書きします。以前の内容を残したい場合は、次に紹介するFile.AppendAllTextを使います。
4-2. File.AppendAllTextで追記する
既存のテキストファイルに内容を追加したい場合は、File.AppendAllTextを使います。
C#File.AppendAllText("log.txt", "ログを追記しました。");
ただし、このままだと前の内容と同じ行に続けて書き込まれる場合があります。ログのように1行ずつ追加したい場合は、改行も一緒に出力します。
C#File.AppendAllText("log.txt", "ログを追記しました。" + Environment.NewLine);
サンプルコードは次のとおりです。
C#using System;
using System.IO;
class Program
{
static void Main()
{
File.AppendAllText("log.txt", "処理を開始しました。" + Environment.NewLine);
File.AppendAllText("log.txt", "処理を終了しました。" + Environment.NewLine);
Console.WriteLine("ログを追記しました。");
}
}
実行すると、log.txtに次のような内容が出力されます。
処理を開始しました。
処理を終了しました。
File.AppendAllTextは、ログ出力のように「既存の内容を残したまま追加したい」ときに便利です。
4-3. StreamWriterでテキストファイルに出力する
複数行のテキストを効率よく出力したい場合や、細かく制御したい場合はStreamWriterを使います。
C#using System;
using System.IO;
class Program
{
static void Main()
{
using StreamWriter writer = new StreamWriter("sample.txt");
writer.WriteLine("1行目");
writer.WriteLine("2行目");
writer.WriteLine("3行目");
Console.WriteLine("ファイル出力が完了しました。");
}
}
StreamWriterのWriteLineを使うと、1行ずつテキストファイルに出力できます。
usingを付けることで、書き込みが終わったあとに自動でファイルを閉じてくれます。ファイルを正しく閉じないと、内容が保存されなかったり、他の処理でファイルを開けなくなったりすることがあります。
追記モードでStreamWriterを使いたい場合は、第2引数にtrueを指定します。
C#using StreamWriter writer = new StreamWriter("log.txt", true);
writer.WriteLine("ログを追記しました。");
第2引数のtrueは「追記する」という意味です。falseまたは省略した場合は、既存ファイルを上書きします。
4-4. ファイル出力時のサンプルコード
テキストファイルに出力する基本サンプルをまとめて確認しましょう。
C#using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "result.txt";
string name = "田中";
int score = 90;
string text =
"成績結果" + Environment.NewLine +
"----------------" + Environment.NewLine +
$"名前:{name}" + Environment.NewLine +
$"点数:{score}" + Environment.NewLine;
File.WriteAllText(filePath, text);
Console.WriteLine("テキストファイルに出力しました。");
}
}
出力されるresult.txtの内容は次のようになります。
成績結果
----------------
名前:田中
点数:90
File.WriteAllTextを使うと、短いテキストや単純な出力を簡単にファイルへ保存できます。
一方で、ログのように何度も追記する場合や、大量のデータを順番に書き込む場合は、StreamWriterを使うと管理しやすくなります。
4-5. 出力されたファイルの確認方法
C#でテキストファイルに出力した場合、ファイルは通常、プログラムの実行フォルダに作成されます。
Visual Studioでコンソールアプリを実行している場合、たとえば次のようなフォルダに作成されることがあります。
プロジェクトフォルダ\bin\Debug\net8.0
または、Release実行の場合は次のような場所です。
プロジェクトフォルダ\bin\Release\net8.0
ファイルの場所がわかりにくい場合は、絶対パスを指定すると確認しやすくなります。
C#File.WriteAllText(@"C:\Temp\sample.txt", "テキストを出力しました。");
文字列の前に@を付けると、\をエスケープせずにパスを書けます。
また、現在の実行フォルダを確認したい場合は、次のコードを使います。
C#Console.WriteLine(Directory.GetCurrentDirectory());
ファイルがどこに作成されたかわからないときは、まず実行フォルダを確認しましょう。
5. テキスト出力時に文字コードを指定する方法
5-1. 文字コードとは何か
文字コードとは、文字をコンピューターで扱うためのルールです。
日本語の「あ」や「漢字」、英数字、記号などは、コンピューター内部では数値として扱われます。その文字と数値の対応ルールが文字コードです。
代表的な文字コードには、次のようなものがあります。
UTF-8は、現在もっともよく使われる文字コードのひとつです。Webサイトや多くのアプリケーションで広く利用されています。
Shift_JISは、古いWindows環境や一部の業務システムで使われることがあります。
UTF-16は、.NET内部の文字列などで使われる形式です。
C#で日本語をテキストファイルに出力する場合、文字コードが合っていないと文字化けすることがあります。そのため、必要に応じて文字コードを指定することが大切です。
5-2. UTF-8でテキスト出力する方法
C#でUTF-8を指定してテキストファイルに出力するには、Encoding.UTF8を使います。
C#using System.IO;
using System.Text;
File.WriteAllText("sample.txt", "こんにちは", Encoding.UTF8);
完全なサンプルコードは次のとおりです。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string text = "C#でUTF-8のテキストファイルを出力します。";
File.WriteAllText("utf8.txt", text, Encoding.UTF8);
Console.WriteLine("UTF-8でファイルを出力しました。");
}
}
このコードを実行すると、utf8.txtに日本語のテキストがUTF-8で書き込まれます。
StreamWriterでも文字コードを指定できます。
C#using StreamWriter writer = new StreamWriter("utf8-log.txt", false, Encoding.UTF8);
writer.WriteLine("UTF-8でログを出力します。");
第2引数のfalseは上書き、第3引数のEncoding.UTF8は文字コードの指定です。
5-3. 文字化けを防ぐための注意点
文字化けを防ぐには、書き込むときの文字コードと、読み込むときの文字コードをそろえることが重要です。
たとえば、C#でUTF-8として出力したファイルを、Shift_JISとして開くと文字化けすることがあります。
反対に、Shift_JISで出力したファイルをUTF-8として読み込んでも、文字化けする場合があります。
文字化けを防ぐためには、次の点に注意しましょう。
日本語を含むファイルは、基本的にUTF-8で出力するのがおすすめです。外部システムに渡す場合は、そのシステムが指定している文字コードに合わせます。古い業務システムやExcel連携では、Shift_JISが必要になる場合もあります。
また、ファイルを開くエディタ側の文字コード設定も確認しましょう。Visual Studio Codeやメモ帳などでは、文字コードを指定して開く機能があります。
5-4. Encodingを指定したファイル出力サンプル
文字コードを指定してファイルに出力するサンプルです。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string filePath = "message.txt";
string text =
"メッセージ一覧" + Environment.NewLine +
"----------------" + Environment.NewLine +
"こんにちは" + Environment.NewLine +
"C#でテキスト出力しています。" + Environment.NewLine;
File.WriteAllText(filePath, text, Encoding.UTF8);
Console.WriteLine("UTF-8でテキストファイルを出力しました。");
}
}
Shift_JISで出力したい場合は、次のように書きます。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
Encoding shiftJis = Encoding.GetEncoding("shift_jis");
File.WriteAllText("shiftjis.txt", "Shift_JISで出力します。", shiftJis);
Console.WriteLine("Shift_JISでファイルを出力しました。");
}
}
ただし、.NET Coreや.NET 5以降でShift_JISを使う場合、環境によっては追加の設定が必要になることがあります。
C#Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding shiftJis = Encoding.GetEncoding("shift_jis");
その場合は、System.Text.Encoding.CodePagesパッケージを追加してから使用します。
初心者の場合は、まずUTF-8での出力を基本として覚えるのがおすすめです。
6. C#のテキスト出力でよくあるエラーと対処法
6-1. Consoleに何も表示されない場合
Consoleに何も表示されない場合は、まずConsole.WriteLineが実行されているか確認しましょう。
C#Console.WriteLine("ここまで実行されました");
プログラムが途中でエラーになっている場合、その後の出力処理は実行されません。
また、Visual Studioでコンソール画面がすぐに閉じてしまう場合は、最後にConsole.ReadLine()を入れると確認しやすくなります。
C#Console.WriteLine("処理が完了しました。");
Console.ReadLine();
ただし、最近のVisual Studioでは、デバッグ実行時にコンソールが自動で閉じない設定になっていることもあります。
Console.WriteLineを書いているのに表示されない場合は、実行しているプロジェクトが正しいか、Mainメソッドが実行されているかも確認しましょう。
6-2. ファイルが作成されない場合
ファイルが作成されない場合は、出力先の場所を確認しましょう。
C#Console.WriteLine(Directory.GetCurrentDirectory());
このコードで、現在の実行フォルダを確認できます。
たとえば、次のコードでは実行フォルダにsample.txtが作成されます。
C#File.WriteAllText("sample.txt", "テキスト出力");
プロジェクト直下ではなく、bin\Debug\net8.0などの実行フォルダに作成されることが多いため、探す場所を間違えないようにしましょう。
確実に場所を指定したい場合は、絶対パスを使います。
C#File.WriteAllText(@"C:\Temp\sample.txt", "テキスト出力");
ただし、指定したフォルダが存在しない場合はエラーになります。事前にフォルダを作成しておきましょう。
6-3. アクセス権限エラーが出る場合
ファイル出力時にアクセス権限エラーが出る場合、指定した場所に書き込み権限がない可能性があります。
たとえば、次のような場所は権限エラーになりやすいです。
C:\Windows
C:\Program Files
初心者の場合は、まず自分のユーザーフォルダやデスクトップ、作業用フォルダに出力するのがおすすめです。
C#File.WriteAllText(
@"C:\Users\ユーザー名\Desktop\sample.txt",
"テキスト出力"
);
また、すでに別のアプリでファイルを開いている場合も、書き込みに失敗することがあります。Excelやエディタで開いているファイルに出力しようとしている場合は、一度閉じてから実行してみましょう。
6-4. パス指定を間違えた場合
C#でファイルパスを書くときは、\の扱いに注意が必要です。
通常の文字列では、\はエスケープ文字として扱われます。そのため、Windowsのパスを書くときは、次のように\\と書く必要があります。
C#File.WriteAllText("C:\\Temp\\sample.txt", "テキスト出力");
または、文字列の前に@を付けると、\をそのまま書けます。
C#File.WriteAllText(@"C:\Temp\sample.txt", "テキスト出力");
初心者には、@を使った書き方がわかりやすくておすすめです。
ただし、存在しないフォルダを指定するとエラーになります。
C#File.WriteAllText(@"C:\NotExists\sample.txt", "テキスト出力");
この場合、C:\NotExistsフォルダが存在しなければファイルを作成できません。
フォルダが存在しない可能性がある場合は、Directory.CreateDirectoryを使って作成できます。
C#string folderPath = @"C:\Temp";
string filePath = Path.Combine(folderPath, "sample.txt");
Directory.CreateDirectory(folderPath);
File.WriteAllText(filePath, "テキスト出力");
Path.Combineを使うと、フォルダパスとファイル名を安全に結合できます。
6-5. 文字化けする場合
日本語をファイルに出力したときに文字化けする場合は、文字コードが原因であることが多いです。
まずはUTF-8を明示して出力してみましょう。
C#using System.IO;
using System.Text;
File.WriteAllText("sample.txt", "こんにちは", Encoding.UTF8);
それでも文字化けする場合は、ファイルを開いているエディタやアプリ側の文字コード設定を確認します。
たとえば、出力したファイルはUTF-8なのに、開く側がShift_JISとして読み込んでいると文字化けすることがあります。
外部システムや古いアプリケーションに渡すファイルの場合、そのシステムが求める文字コードを確認することが大切です。
Excelや古い業務ソフトで読み込む場合は、UTF-8ではなくShift_JISが求められるケースもあります。反対に、Web系のシステムではUTF-8が標準的に使われることが多いです。
7. Console出力とファイル出力の使い分け
7-1. Console出力が向いているケース
Console出力は、画面上で結果をすぐに確認したい場合に向いています。
たとえば、次のようなケースです。
学習中に変数の値を確認したい場合、プログラムの動きを簡単にチェックしたい場合、ユーザーにメッセージを表示したい場合、コンソールアプリの実行結果を表示したい場合などです。
C#int total = 100 + 200;
Console.WriteLine($"合計は{total}です。");
Console出力は手軽に使えるため、C#の学習や簡単な確認にとても便利です。
ただし、プログラムを終了すると表示内容は基本的に残りません。結果をあとから確認したい場合は、ファイル出力を使う必要があります。
7-2. ファイル出力が向いているケース
ファイル出力は、結果を保存したい場合に向いています。
たとえば、次のようなケースです。
処理結果をテキストファイルとして保存したい場合、ログを残したい場合、ユーザーの入力内容を保存したい場合、別のアプリやシステムに渡すデータを作成したい場合などです。
C#File.WriteAllText("result.txt", "処理結果を保存しました。");
ファイルに出力しておけば、プログラム終了後も内容を確認できます。
特にログ出力では、File.AppendAllTextやStreamWriterを使って追記していく方法がよく使われます。
C#File.AppendAllText("log.txt", "処理が実行されました。" + Environment.NewLine);
7-3. デバッグ・ログ・保存処理での使い分け
C#のテキスト出力は、目的に応じて使い分けることが大切です。
デバッグ目的で一時的に値を確認したい場合は、Console.WriteLineが簡単です。
C#Console.WriteLine($"現在の値:{value}");
処理の履歴を残したい場合は、ファイルにログとして追記します。
C#File.AppendAllText("log.txt", "処理を実行しました。" + Environment.NewLine);
最終的な結果を保存したい場合は、File.WriteAllTextでまとめて出力するとわかりやすいです。
C#File.WriteAllText("result.txt", "最終結果:成功");
大量のログや複数行の出力を扱う場合は、StreamWriterを使うと効率的です。
C#using StreamWriter writer = new StreamWriter("log.txt", true);
writer.WriteLine("処理開始");
writer.WriteLine("処理中");
writer.WriteLine("処理終了");
7-4. 初心者におすすめの学習順
C#初心者がテキスト出力を学ぶなら、次の順番がおすすめです。
まずはConsole.WriteLineを使って、文字列や変数を画面に表示する方法を覚えましょう。
次に、Console.Writeとの違いを理解します。改行されるかどうかを確認すると、使い分けがしやすくなります。
その次に、\nやEnvironment.NewLineを使った改行の扱いを学びます。
Console出力に慣れたら、File.WriteAllTextでテキストファイルに保存する方法を覚えましょう。
最後に、File.AppendAllTextやStreamWriterを使って、追記や複数行のファイル出力に挑戦すると理解が深まります。
この順番で学ぶと、C#のテキスト出力を無理なく身につけられます。
8. C#でテキスト出力する実践サンプル
8-1. 入力した文字をConsoleに出力する
ユーザーが入力した文字をConsoleに出力するサンプルです。
C#using System;
class Program
{
static void Main()
{
Console.Write("名前を入力してください:");
string name = Console.ReadLine();
Console.WriteLine($"こんにちは、{name}さん!");
}
}
実行例は次のようになります。
名前を入力してください:太郎
こんにちは、太郎さん!
Console.ReadLineは、ユーザーが入力した1行の文字列を受け取るメソッドです。
受け取った文字列を変数nameに入れ、Console.WriteLineで出力しています。
8-2. 入力した文字をテキストファイルに保存する
次は、ユーザーが入力した文字をテキストファイルに保存するサンプルです。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
Console.Write("メッセージを入力してください:");
string message = Console.ReadLine();
File.WriteAllText("message.txt", message, Encoding.UTF8);
Console.WriteLine("入力内容をmessage.txtに保存しました。");
}
}
このコードを実行すると、入力した内容がmessage.txtに保存されます。
たとえば、次のように入力します。
メッセージを入力してください:C#でテキスト出力
すると、message.txtには次の内容が出力されます。
C#でテキスト出力
File.WriteAllTextは上書き保存なので、再度実行すると前回の内容は消えて新しい内容に置き換わります。
8-3. 複数行のログをファイルに追記する
ログのように、複数行のテキストをファイルに追記するサンプルです。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string filePath = "app.log";
File.AppendAllText(filePath, "アプリを開始しました。" + Environment.NewLine, Encoding.UTF8);
File.AppendAllText(filePath, "処理を実行しました。" + Environment.NewLine, Encoding.UTF8);
File.AppendAllText(filePath, "アプリを終了しました。" + Environment.NewLine, Encoding.UTF8);
Console.WriteLine("ログを出力しました。");
}
}
出力されるapp.logの内容は次のようになります。
アプリを開始しました。
処理を実行しました。
アプリを終了しました。
File.AppendAllTextを使うと、既存の内容を残したまま末尾に追加できます。
ログ出力では、1回の処理ごとに改行を入れることが多いため、Environment.NewLineを忘れないようにしましょう。
8-4. 日時付きでテキスト出力する
実務では、ログに日時を付けて出力することがよくあります。
C#using System;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
string filePath = "log.txt";
string log = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} 処理を開始しました。";
Console.WriteLine(log);
File.AppendAllText(filePath, log + Environment.NewLine, Encoding.UTF8);
}
}
実行結果の例は次のとおりです。
2026-01-15 10:30:45 処理を開始しました。
ファイルにも同じ内容が追記されます。
日時の形式は、次の部分で指定しています。
C#{DateTime.Now:yyyy-MM-dd HH:mm:ss}
これは、現在日時を年-月-日 時:分:秒の形式で出力する書き方です。
ログを残す場合は、日時を付けておくと「いつ処理が行われたか」がわかりやすくなります。
9. C#のテキスト出力に関するよくある質問
9-1. Console.WriteLineとConsole.Writeの違いは?
Console.WriteLineは、テキストを出力したあとに改行します。
C#Console.WriteLine("A");
Console.WriteLine("B");
実行結果は次のようになります。
A
B
一方、Console.Writeは改行しません。
C#Console.Write("A");
Console.Write("B");
実行結果は次のようになります。
AB
1行ずつ表示したい場合はConsole.WriteLine、同じ行に続けて表示したい場合はConsole.Writeを使います。
9-2. File.WriteAllTextとStreamWriterの違いは?
File.WriteAllTextは、文字列をまとめてファイルに書き込むときに便利です。
C#File.WriteAllText("sample.txt", "こんにちは");
短いテキストや、完成した文字列を一度に保存する場合に向いています。
一方、StreamWriterは、複数行を順番に書き込む場合や、大量のデータを出力する場合に向いています。
C#using StreamWriter writer = new StreamWriter("sample.txt");
writer.WriteLine("1行目");
writer.WriteLine("2行目");
writer.WriteLine("3行目");
初心者は、まずFile.WriteAllTextを覚え、複数行やログ出力に慣れてきたらStreamWriterを使うとよいでしょう。
9-3. 既存ファイルを上書きせずに追記するには?
既存ファイルを上書きせずに追記するには、File.AppendAllTextを使います。
C#File.AppendAllText("log.txt", "追記するテキスト" + Environment.NewLine);
StreamWriterで追記したい場合は、第2引数にtrueを指定します。
C#using StreamWriter writer = new StreamWriter("log.txt", true);
writer.WriteLine("追記するテキスト");
File.WriteAllTextは上書き、File.AppendAllTextは追記と覚えておくとわかりやすいです。
9-4. 改行コードはどれを使えばいい?
Consoleに1行ずつ表示するだけなら、Console.WriteLineを使うのが一番簡単です。
C#Console.WriteLine("1行目");
Console.WriteLine("2行目");
文字列の中で改行したい場合は、\nを使えます。
C#Console.WriteLine("1行目\n2行目");
ファイル出力で環境に合った改行を使いたい場合は、Environment.NewLineがおすすめです。
C#string text = "1行目" + Environment.NewLine + "2行目";
初心者は、まずWriteLineを使い、文字列として改行を含めたい場合にEnvironment.NewLineを使うとよいでしょう。
9-5. 日本語を文字化けさせずに出力するには?
日本語を文字化けさせずに出力するには、文字コードを意識することが大切です。
基本的にはUTF-8で出力するのがおすすめです。
C#using System.IO;
using System.Text;
File.WriteAllText("japanese.txt", "こんにちは、C#です。", Encoding.UTF8);
StreamWriterでもUTF-8を指定できます。
C#using StreamWriter writer = new StreamWriter("japanese.txt", false, Encoding.UTF8);
writer.WriteLine("こんにちは、C#です。");
それでも文字化けする場合は、ファイルを開くアプリ側の文字コード設定を確認してください。
出力側がUTF-8でも、読み込み側がShift_JISとして開いていると文字化けすることがあります。
外部システムに渡すファイルの場合は、そのシステムが指定している文字コードに合わせましょう。
まとめ
C#でテキスト出力する方法には、画面に表示するConsole出力と、ファイルに保存するファイル出力があります。
画面に表示したい場合は、Console.WriteLineとConsole.Writeを使います。Console.WriteLineは出力後に改行し、Console.Writeは改行せずに出力します。
変数の値を出力するときは、文字列補間を使うと読みやすく書けます。
C#string name = "太郎";
Console.WriteLine($"こんにちは、{name}さん");
改行を扱う場合は、WriteLine、\n、Environment.NewLineを使い分けます。特にファイル出力では、Environment.NewLineを使うと環境に合った改行を出力できます。
テキストファイルに出力する場合は、簡単な保存ならFile.WriteAllText、追記ならFile.AppendAllText、複数行や大量の出力ならStreamWriterが便利です。
C#File.WriteAllText("sample.txt", "テキスト出力");
File.AppendAllText("log.txt", "ログを追記" + Environment.NewLine);
日本語を出力する場合は、文字化けを防ぐためにUTF-8などの文字コードを指定することも重要です。
C#File.WriteAllText("sample.txt", "こんにちは", Encoding.UTF8);
C#のテキスト出力は、プログラミング学習の基本であり、デバッグ、ログ保存、ファイル作成など多くの場面で使います。まずはConsole.WriteLineで画面に出力するところから始め、慣れてきたらファイル出力や文字コード指定にも挑戦してみましょう。

