Linq ファイルの読み込み書き込み

C# Linq ファイルのn番目に文字列を挿入する方法 ReadLinesメソッド、WriteAllLinesメソッドを使用してみよう!

今回のテーマ

今回は既に内容が書き込まれているファイルに対し、指定した行に文字列を挿入する方法を解説します。

ファイルを読み込むためのメソッドと書き込むためのメソッドを一緒に使います。

この記事では、下記の行に書き込むソースコードを書いていきます。

・1行目に書き込む方法

・n行目に書き込む方法

・1番最後の行に書き込む方法

それでは、やっていきましょう。

KappaChan
今回はファイルに文字列を挿入していく方法をみていくかっぱ!

今回使用するファイルの内容

今回は「D:\Example」に下記の内容のファイルを置きました。

 Robot.txt
Rockman
Rollchan
Fireman
Iceman

このファイルに対して内容を挿入していきましょう!!

1行目に挿入する方法

早速ソースコードを書いていきます。1行目に「Quickman」、2行目に「Bubbleman」を挿入してみます。

 テキストの内容
Quickman
Bubbleman
Rockman
Rollchan
Fireman
Iceman

処理を1つずつ解説していきます。

step
1
FileStreamクラスを使用して、テキストファイルをオープンし、StreamReaderとStreamWriterのオブジェクトを生成します。各引数は下記となっています。

・第1引数:ファイルのパス

・第2引数:既存ファイルを開く

・第3引数:読み込みと書き込みを両方行えるようにする。

・第4引数:他からのアクセスを拒否

step
2
ReadToEndメソッドでtexts引数に保持

step
3
Positionプロパティで最初の位置に戻し、挿入したい内容を書き込む

step
4
保持した内容(texts引数)を書き込む

上記の処理によって、実現しています。続けて、n番目に挿入する方法を紹介します。

KappaChan
読み込み書き込みを両方行えるようにすることが重要かっぱ!

n番目に挿入する方法

この記事を見ている方はn行目に挿入する方法を知りたい方が一番多いと思います。

私も色々とやり方を考えていたのですが、下記の方法が一番しっくりときました。ソースコードを書いていきます。

下記の例では、4行目に「Quickman」と「Bubbleman」を挿入する例です。

 Robot2.txt
Rockman
Rollchan
Fireman
Quickman
Bubbleman
Iceman

4行目に挿入することが出来ました。ReadLinesメソッドを使用する方法です。ReadLinesメソッドに関しては、下記の記事も参考になります。

こちらもCHECK

C# Linq ファイルの書き込み方法を紹介 Linqの抽出結果を書き込むことも可能です。 

今回のテーマContents1 今回のテーマ2 ファイルに1行ずつ書き込む方法3 配列、リストの文字列をファイルに一気に書き込む方法4 配列、リストの文字列をファイルに一気に追加する方法5 配列、リス ...

続きを見る

本当は元々のファイルに対して、書き込みたかったのですが、読み込みのアクセスのプロセスを削除することが出来ずに断念しました。

上記のソースコードに対して、処理の説明をしていきます。

step
1
File.ReadLinesメソッドを使用して、全てのテキストの内容を読み込む。

step
2
Skipメソッドを使用することで指定した行数より後ろの内容を保持する。

step
3
Takeメソッドで指定した行数より前の内容を取り出す。

step
4
3で取り出した内容に挿入したい文字列を追加し、その後に2で保持した内容を追加する。

step
5
4で作成した配列をWriteAllLinesメソッドによって一気に書き込む。

このやり方はReadLinesメソッドを使用しているので、処理も早く、メモリの圧迫する心配がないのが強みです。

また、Linqを自由に扱うことができるので、自由自在に内容を変更することが出来ます。

1番初めに挿入する方法も0を指定すると出来てしまいます。元のテキストに書き込めない以外はとても万能です。

誰かFileクラスを使用した時のメモリ解放の方法教えてください!!

TakeメソッドとSkipメソッドについては下記の記事を参考にしてください。

こちらもCHECK

C# Linqの使い方。Take、Skip、TakeWhile、SkipWhileメソッドを解説。

今回のテーマContents1 今回のテーマ2 Take、Skip、TakeWhile、SkipWhileについて2.1 Take2.2 Skip2.3 TakeWhile2.4 SkipWhile3 ...

続きを見る

一番最後の行に挿入する方法

正直書かなくてもいいかなーって思いましたが、一応書いておきますね。

下記のようにStreamWriterを使用するのが一般的だと思います。

 Robot.txt
Rockman
Rollchan
Fireman
Iceman
Quickman
Bubbleman

気を付けないといけない所はStreamWriterの第2引数をtrueにすることですね。

falseにすると、全ての内容を上書きして書き込みます。下記のようになるので、気を付けましょう。

 Robot.txt
Quickman
Bubbleman

まとめ

今回の記事では、ファイルの内容の挿入方法について書いていきました。

今回のやり方が必ずしも正しいとは限らないので、

今回実装する処理でしっくりきた場合はぜひ紹介した方法を使ってください。

少しでもお役に立てたのであれば幸いです。

KappaChan
最後まで記事を読んでくれてありがとうかっぱ!!

 

 

 

-Linq, ファイルの読み込み書き込み

X