今回のテーマ
こんにちは、サルモリです。。今回は下記のテーマについて書いていきます。
今回のテーマ
ファイルの書き込み方法について
今回はファイルへの書き込み方法について紹介していきたいと思います。
前回の記事はこちらです。
CHECK
-
【C# sharp Linq】CsvファイルとTsvファイルの読み込み方法
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
他のLinqの記事についてはこちら
ファイルに1行ずつ書き込む方法
ファイルに1行ずつ書き込む方法について紹介します。
まずは書き込むファイルを準備しましょう。
書き込むファイルについて
ファイルは下記フォルダにrobot.txtを格納しました。
folder
D:\test
フォルダは下記の通りです。
ファイルの内容は何も記述されておりません。
早速、ファイルに書き込むソースコードを見ていきましょう。
ファイルに1行ずつ書き込む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.txt"; using(var streamwriter = new StreamWriter(filepath, append: false)) { streamwriter.WriteLine("Rockman"); streamwriter.WriteLine("Roll"); streamwriter.WriteLine("Fireman"); streamwriter.WriteLine("Iceman"); } } } } |
robot.txt
Rockman
Roll
Fireman
Iceman
ファイルに書き込まれました。
ポイント
12行目:書き込み用のストリームを生成します。第1引数にはファイルのパス、第2引数には上書きするか行を追加するかのフラグです。trueだと既存のファイルの文字列に追加を行います。
14行目~17行目:ファイルに内容を書き込んでいます。
ストリームを生成している時の第2引数がtrueの時の動きを見てみましょう。ファイルには下記の内容が記述されています。
robot.txt
Airman
下記のソースコードを実行してみましょう。
ファイルに書き込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.txt"; using(var streamwriter = new StreamWriter(filepath, append: true)) { streamwriter.WriteLine("Rockman"); streamwriter.WriteLine("Roll"); streamwriter.WriteLine("Fireman"); streamwriter.WriteLine("Iceman"); } } } } |
robot.txt
Airman
Rockman
Roll
Fireman
Iceman
既存のファイルに文字列が追加されましたね。
ファイルの読み書きについての記事はこちら
配列、リストの文字列をファイルに一気に書き込む方法
続けて、配列を指定しファイルに一括で書き込む方法を紹介します。
下記のソースコードを実行してみてください。
配列の文字列を一括で書き込む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { var robotarray = new string[] { "Rockman", "Roll", "Fireman", "Iceman" }; String filepath = @"D:\test\robot.txt"; File.WriteAllLines(filepath, robotarray); } } } |
robot.txt
Rockman
Roll
Fireman
Iceman
配列の内容を一括で書き込みできています。WriteAllLinesメソッドを使用することで可能です。第1引数にパス、第2引数に配列を指定しましょう。
リストも同じように書き込むことができます。
リストの文字列を一括で書き込む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { var robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Roll"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); String filepath = @"D:\test\robot.txt"; File.WriteAllLines(filepath, robotlist); } } } |
robot.txt
Rockman
Roll
Fireman
Iceman
リストの内容もファイルに書き込まれました。
配列、リストの文字列をファイルに一気に追加する方法
上記のWriteAllLineメソッドでは、ファイルを上書きしてしまいます。
ファイルに文字列を追加したい場合はAppendAllLinesを使用しましょう。
ファイルには上記で実行した文字列が記述されています。
robot.txt
Rockman
Roll
Fireman
Iceman
ファイルにリストの文字列を追加する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { var robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Roll"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); String filepath = @"D:\test\robot.txt"; File.AppendAllLines(filepath, robotlist); } } } |
robot.txt
Rockman
Roll
Fireman
Iceman
Rockman
Roll
Fireman
Iceman
文字列が追加されてますね。
ファイルの読み書きについての記事はこちら
配列、リストの文字列にLinqを使用した結果をファイルに一気に追加する方法
配列やリストの文字列をファイルに書き込むことが出来るので、Linqで抽出した結果をファイルに書き込むことも可能です。
下記のソースコードを実行してみてください。
Linqを使用した内容を書き込む
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { var robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Roll"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); String filepath = @"D:\test\robot.txt"; File.AppendAllLines(filepath, robotlist.Where(x => x.Contains("man")).Select(x => x.Replace("man","woman"))); } } } |
robot.txt
Rockwoman
Firewoman
Icewoman
出力内容がLinq結果に代わっていますね。
まとめ
今回はファイルへの書き込み方法を学びました。書き込みはその時の用途に合わせて使い分けてみてください。
配列やリストをファイルに出力する方法は使いこなせるようになるとかなり便利なので、ぜひ覚えてくださいね。
今回の記事は終わりです。最後まで見て頂きありがとうございました。
他のLinqの記事についてはこちら