ファイルから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 メソッドが自動で呼び出されます。なんとなく気持ち悪いので呼び出しているだけです。
「 コードが長くなるから書くな 」とかいう時代になるかもです。しかし、ここら辺は人によってウンチクも多々ありますので、一旦ウンチク大会が始まると疲れるときもあります。正論は人の心に届かない時もあります。どうしても言いくるめたいときは、時間と場所と話し方を考えましょう。論理的な綻びや矛盾がなければ伝わると思いますよ。相手に聴く能力があるという前提条件が必要ですが。