Visual Basicでは、従来の手続き(FileOpen, Input, Put, Close)と**.NET API**(System.IO.StreamReader, StreamWriter, FileStream)の両方を使用してファイルを操作できます。.NETクラスを使用することが推奨されています。
細かい点:
Using構文を使用することが推奨されます。StreamReader/StreamWriterを、バイトにはFileStreamを使用してください。コード例:
Dim filePath As String = "test.txt" ' ファイルへの書き込み Using writer As New StreamWriter(filePath) writer.WriteLine("Hello, world!") End Using ' ファイルからの読み込み Using reader As New StreamReader(filePath) Dim content As String = reader.ReadToEnd() End Using
StreamWriterを介してファイルに書き込んだ後、ストリームを閉じないとどうなりますか?また、なぜ
Using構文を使用することが重要なのでしょうか?
回答:
ストリームを閉じない(Closeを呼び出さないか、Usingを使用しない)と、バッファリングされたデータがディスクに書き込まれない可能性があります。オペレーティングシステムがそれらをメモリに保持するためです。また、閉じられていないストリームはファイルディスクリプタを保持し、ファイルが他のプロセスによってロックされる可能性があります。長生きするアプリケーションでは、メモリとリソースのリークが発生します。Using構文は、例外が発生した場合でもDisposeが呼ばれることを保証します。
物語
データの突然の消失: 銀行でレポートを生成する際、開発者は
StreamWriterを閉じませんでした。その結果、解放されていないバッファのために一部のデータがファイルに記録されず、顧客サービス部門は最終レポートを開くことができませんでした。
物語
ファイルディスクリプタのリーク: ERPシステムで、開発者は手動でファイルを開き、
Closeを呼び出すことをしばしば忘れました。数日後、アプリケーションはオープンファイルの制限を超えてクラッシュしました。
物語
ファイルロックの競合: ネットワークバックアップサービスでは、正しいアクセスモードでファイルが開かれなかったため、他のプログラムへのアクセスがロックされ、部門全体で長時間のダウンタイムが発生しました。