Starry

プログラミングやクラウドについて

C# Fileの読み書き

仕事で扱う機会があったのでこの機会に少しまとめてみようかな、と。
とりあえず基本的な事項のみで。


C#の現在のものだとopenとかcloseとかは気にしないですむ。
まずは普通にファイルの書き込み。

class Program
    {
        private static string path = "test.txt";
        static void Main(string[] args)
        {
            File.WriteAllText(path, "HelloWorld");
        }
    }

結果

HelloWorld


配列を入れてファイルの書き込みもできるらしい。
配列の要素ごとに改行を行う。

class Program
    {
        private static string path = "test.txt";
        static void Main(string[] args)
        {
            var array = new string[] {"apple", "banana", "cherry"};
            File.WriteAllLines(path, array);
        }
    }

結果

apple
banana
cherry


ファイルの読み込みも簡単に行える。
前提として上記のappleなどが書かれているファイルを読み込む。

class Program
    {
        private static string path = "test.txt";
        static void Main(string[] args)
        {
            var reader = File.ReadAllText(path);
            Console.WriteLine(reader);
        }
    }

結果

apple
banana
cherry


上記のWriteLinesと似たような感じでReadAllLinesメソッドを使用すると、行ごとの配列で結果が返ってくる。

class Program
    {
        private static string path = "test.txt";
        static void Main(string[] args)
        {
            var reader = File.ReadAllLines(path);
            foreach (var item in reader)
            {
                Console.WriteLine(item);
            }
        }
    }

結果

apple
banana
cherry


WriteLineのデメリットとして二回行ってしまうと結果が上書きされてしまう。

class Program
    {
        private static string path = "test2.txt";
        static void Main(string[] args)
        {
            File.WriteAllText(path, "HelloWorld");
            File.WriteAllText(path, "HelloWorld2");
        }
    }

結果

HelloWorld2


なので、AppendAllTextを使う。
なお、AppendAllLinesは配列やリストで渡すと行ごとに書き込みを行ってくれる。
というか、これだけは配列じゃなくてもいいらしい。

class Program
    {
        private static string path = "test3.txt";
        static void Main(string[] args)
        {
            File.AppendAllText(path, "HelloWorld");
            File.AppendAllText(path, "HelloWorld2");
            File.AppendAllLines(path, new string[] {"apple", "banana"});
            File.AppendAllLines(path, new List<string>() {"cherry","drian"});
        }
    }

結果

HelloWorldHelloWorld2apple
banana
cherry
drian