ファイルから1行ずつ読み込んだり、1行ずつ書き込みことは非常に多いと思います。ここでは、ファイルを 1行ずつの読み込み、それを 1行ずつの書き込むサンプルコードを掲載しています。
スポンサーリンク
ファイルの1行読み込み・1行書き込み
以下は、ファイルを1行ずつ読み込み、1行ずつ書き込むサンプルコードです。詳細はサンプル内のコメントを参照ください。
VB.NET
'Imports System.IO 'Imports System.Text ' 出力ファイルパスを組み立てる Dim inputFile As String = "D:\input.txt" ' 入力用ファイル Dim outputFile As String = "D:\output.txt" ' 出力用ファイル ' 出力用ファイルをオープンする Using writer As New StreamWriter(outputFile, False, Encoding.Default) ' 入力用ファイルをオープンする Using reader As New StreamReader(inputFile, Encoding.Default) ' 読み取り可能文字が存在しない(ファイルの末尾に到着)すると -1 が返される While (reader.Peek() > -1) ' 1 行ずつ読み込み、出力ファイルに書き込む ' このときの改行コードは Windows標準の CRLF となる writer.WriteLine(reader.ReadLine()) End While ' ファイルを閉じる reader.Close() End Using ' ファイルを閉じる writer.Close() End Using
C#
//using System.Text; //using System.IO; // 出力ファイルパスを組み立てる string inputFile = @"D:\input.txt"; // 入力用ファイル string outputFile = @"D:\output.txt"; // 出力用ファイル // 出力用ファイルをオープンする using (StreamWriter writer = new StreamWriter(outputFile, False, Encoding.Default)) { // 入力用ファイルをオープンする using (StreamReader reader = new StreamReader(inputFile, Encoding.Default)) { // 読み取り可能文字が存在しない(ファイルの末尾に到着)すると -1 が返される while (reader.Peek() > -1) { // 1 行ずつ読み込み、出力ファイルに書き込む // このときの改行コードは Windows標準の CRLF となる writer.WriteLine(reader.ReadLine()); } // ファイルを閉じる reader.Close(); } // ファイルを閉じる writer.Close(); }
ファイルの読み込みでは改行コードが、CR(MAC)、LF(Unix)、CRLF(Windows)のいずれの場合でもそこまでを1行として読み込みますが、出力は Windows 標準の CRLF となります。従って、書き込んだファイルは、ファイルサイズが変化する場合があります。
またポイントとして、using を使用して確実にファイルのクローズを行っていますので、上記のサンプルコードでは Close メソッドはコールしなくとも大丈夫です。Dispose メソッドが自動で呼び出されます。なんとなく気持ち悪いので呼び出しているだけです。
「 コードが長くなるから書くな 」とかいう時代になるかもです。しかし、ここら辺は人によってウンチクも多々ありますので、一旦ウンチク大会が始まると疲れるときもあります。正論は人の心に届かない時もあります。どうしても言いくるめたいときは、時間と場所と話し方を考えましょう。論理的な綻びや矛盾がなければ伝わると思いますよ。相手に聴く能力があるという前提条件が必要ですが。