Zenn
🐕

C#でのファイル操作入門 - 要点まとめ

2025/03/30に公開

はじめに

プログラミング初学者の備忘録として、C#におけるファイルシステム操作の基本をまとめました。

1. ディレクトリとパスの操作

現在のディレクトリを取得

var currentDirectory = Directory.GetCurrentDirectory();
Console.WriteLine(currentDirectory);

クロスプラットフォーム対応のパス

// OS間で互換性のあるパス区切り文字
Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");

// より簡単な方法
Console.WriteLine(Path.Combine("stores", "201"));

2. ディレクトリ操作

ディレクトリの作成

// 階層的なディレクトリを一度に作成
Directory.CreateDirectory(
    Path.Combine(Directory.GetCurrentDirectory(), "stores", "201", "newDir")
);

ディレクトリの存在確認

bool doesDirectoryExist = Directory.Exists(filePath);

3. ファイル操作

ファイルの作成と書き込み

// ファイルを作成して内容を書き込む
File.WriteAllText(
    Path.Combine(Directory.GetCurrentDirectory(), "greeting.txt"), 
    "Hello World!"
);

ファイルからデータを読み取る

// ファイルの内容を文字列として読み込む
string content = File.ReadAllText(
    $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json"
);

ファイルにデータを追加

// 既存のファイルに内容を追加
File.AppendAllText(
    $"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", 
    $"{data.Total}{Environment.NewLine}"
);

4. ファイル検索

ディレクトリ内のファイルを検索

IEnumerable<string> FindFiles(string folderName)
{
    List<string> salesFiles = new List<string>();
    var foundFiles = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
    
    foreach (var file in foundFiles)
    {
        var extension = Path.GetExtension(file);
        if (extension == ".json")
        {
            salesFiles.Add(file);
        }
    }
    return salesFiles;
}

5. JSONデータの処理

Newtonsoft.Jsonの導入

# コマンドラインからパッケージをインストール
$ dotnet add package Newtonsoft.Json
// コードの先頭で名前空間をインポート
using Newtonsoft.Json;

JSONのデシリアライズ

// JSONファイルを読み込む
var salesJson = File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");

// JSONをC#オブジェクトに変換
var salesData = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

// データモデルクラス
class SalesTotal
{
    public double Total { get; set; }
}

まとめ

C#のファイルシステム操作の基本を紹介しました。これらを組み合わせることで、効率的なデータ処理アプリケーションの開発が可能になります。

より詳細な説明や実践例については、私のブログ(スキルおたく)をご覧ください。


参考資料

Discussion

ログインするとコメントできます