第7章: C#のファイル操作

7.1 ファイルの読み書き

C#にはファイルの読み書き操作を簡単に行えるクラスやメソッドが用意されています。System.IO名前空間に含まれるFileクラスやStreamReaderStreamWriterクラスを使用して、ファイルの読み込みや書き込みを行います。

7.1.1 テキストファイルの書き込み

File.WriteAllTextメソッドを使用して、テキストファイルに文字列データを書き込むことができます。このメソッドは、ファイルパスと書き込む内容を引数に取り、指定した内容をファイルに一度に書き込む方法です。

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "example.txt";
string content = "Hello, C# ファイルの書き込み!";

File.WriteAllText(filePath, content);

Console.WriteLine("テキストファイルに書き込みが完了しました。");
}
}

このコードは、”example.txt” というファイルに「Hello, C# ファイルの書き込み!」という内容を書き込みます。もしファイルが存在しなければ、新たに作成され、既存のファイルがある場合は内容が上書きされます。

7.1.2 テキストファイルの読み込み

ファイルからテキストを読み込むには、File.ReadAllTextメソッドを使用します。以下の例では、先ほど作成したファイルから内容を読み取り、コンソールに出力します。

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "example.txt";

if (File.Exists(filePath))
{
string content = File.ReadAllText(filePath);
Console.WriteLine("ファイルの内容:");
Console.WriteLine(content);
}
else
{
Console.WriteLine("ファイルが見つかりません。");
}
}
}

ファイルが存在すればその内容をコンソールに出力し、存在しない場合はメッセージを表示するようになっています。

7.1.3 StreamWriterとStreamReaderを使ったファイル操作

StreamWriterStreamReaderクラスは、ファイルの内容を一行ずつ書き込んだり読み取ったりしたい場合に適しています。

書き込み例:

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "lines.txt";

using (StreamWriter writer = new StreamWriter(filePath))
{
writer.WriteLine("1行目のテキスト");
writer.WriteLine("2行目のテキスト");
writer.WriteLine("3行目のテキスト");
}

Console.WriteLine("複数行のテキストを書き込みました。");
}
}

usingブロックを使うことで、StreamWriterオブジェクトの処理が終わった後に自動的にリソースが解放されます。

読み込み例:

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "lines.txt";

if (File.Exists(filePath))
{
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
else
{
Console.WriteLine("ファイルが見つかりません。");
}
}
}

StreamReaderを使用して、ファイルの内容を一行ずつ読み取り、コンソールに出力しています。


7.2 CSVファイルの操作

CSV(Comma Separated Values)ファイルは、データをカンマで区切って格納する形式で、Excelや多くのデータ分析ツールでサポートされています。C#でCSVを扱う場合は、StreamReaderStreamWriterを使用して手動で解析するか、CsvHelperなどの外部ライブラリを利用する方法があります。ここでは、StreamReaderStreamWriterを使用した基本的な例を紹介します。

7.2.1 CSVファイルへの書き込み

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "data.csv";

using (StreamWriter writer = new StreamWriter(filePath))
{
writer.WriteLine("名前,年齢,職業");
writer.WriteLine("佐藤,30,エンジニア");
writer.WriteLine("田中,25,デザイナー");
writer.WriteLine("鈴木,28,マーケティング");
}

Console.WriteLine("CSVファイルへの書き込みが完了しました。");
}
}

この例では、CSV形式で名前、年齢、職業の情報をファイルに書き込んでいます。

7.2.2 CSVファイルの読み込み

次に、CSVファイルからデータを読み取る方法です。各行をカンマで分割して配列に格納し、それぞれの値をコンソールに表示します。

using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "data.csv";

if (File.Exists(filePath))
{
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] values = line.Split(',');
Console.WriteLine("名前: " + values[0] + ", 年齢: " + values[1] + ", 職業: " + values[2]);
}
}
}
else
{
Console.WriteLine("CSVファイルが見つかりません。");
}
}
}

このコードは、各行をカンマで区切り、名前・年齢・職業をそれぞれ表示しています。


7.3 JSONファイルの操作

JSON(JavaScript Object Notation)は、データの構造を表現するための軽量な形式です。C#では、System.Text.Jsonを利用してJSONデータのシリアライズ(オブジェクトをJSON形式に変換)やデシリアライズ(JSON形式をオブジェクトに変換)を行えます。

7.3.1 JSONファイルへの書き込み

以下の例では、クラスを定義し、そのインスタンスをJSON形式でファイルに保存しています。

using System;
using System.IO;
using System.Text.Json;

class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Job { get; set; }
}

class Program
{
static void Main()
{
Person person = new Person
{
Name = "佐藤",
Age = 30,
Job = "エンジニア"
};

string filePath = "person.json";
string json = JsonSerializer.Serialize(person);

File.WriteAllText(filePath, json);

Console.WriteLine("JSONファイルへの書き込みが完了しました。");
}
}

この例では、JsonSerializer.SerializeメソッドでオブジェクトをJSON文字列に変換し、それをファイルに書き込んでいます。

7.3.2 JSONファイルの読み込み

次に、JSONファイルからデータを読み込み、オブジェクトとして復元する方法です。

using System;
using System.IO;
using System.Text.Json;

class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Job { get; set; }
}

class Program
{
static void Main()
{
string filePath = "person.json";

if (File.Exists(filePath))
{
string json = File.ReadAllText(filePath);
Person person = JsonSerializer.Deserialize<Person>(json);

Console.WriteLine("名前: " + person.Name);
Console.WriteLine("年齢: " + person.Age);
Console.WriteLine("職業: " + person.Job);
}
else
{
Console.WriteLine("JSONファイルが見つかりません。");
}
}
}

このコードでは、JSON文字列をJsonSerializer.Deserializeメソッドでオブジェクトに変換しています。JSONファイルが存在する場合、ファイルの内容を読み込んでPersonオブジェクトにデシリアライズし、コンソールに出力します。


まとめ

この章では、C#でのファイル操作を理解するために、テキストファイル、CSVファイル、JSONファイルの読み書き方法を解説しました。これにより、さまざまな形式でデータを保存し、必要に応じて取り出すことができるようになります。ファイル操作を活用することで、アプリケーションの機能を大幅に拡張できるでしょう。


初心者におすすめ!プログラミングスクールのススメ

未経験でも気軽に!サブスク型プログラミングスクール【Freeks】

プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。

独学の挫折率、驚きの87.5%!

独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。

有料と無料、スクールの違いは?

プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:

  • 受講条件が異なる
  • 学べるスキルやカリキュラム内容が異なる
  • 就職や転職のサポート内容が異なる

どちらが自分に合っているか、よく考えて選ぶのが大事です。

サブスク型プログラミングスクール『FREEKS(フリークス)』に注目!

プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:

  • 未経験者向けのわかりやすいカリキュラム
  • 経験豊富なエンジニアのサポート
  • オンラインで自分のペースで学習可能

なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。

終了後は副業もサポート!

カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。

独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
 ↓ ↓ こちらをクリック ↓ ↓ 

Related Post

第6章: C#の例外処理第6章: C#の例外処理

プログラムを実行中に発生する予期しないエラーや問題に対応するために、C#には例外処理という機能があります。例外処理を理解し、適切に活用することで、コードの信頼性と堅牢性を向上させることができます。ここでは、例外処理の基本 […]