0

6 GB のテキスト ファイル (SQL スクリプト) の特定の行を変更しようとしています。だから私はそれを読み込んでIO.StreamReader.ReadLine新しいファイルに書き込みますIO.StreamWriter.WriteLine. 行が特定の条件に一致する場合は、それを修正してから書きます。

問題は、結果のファイルが元のファイルのサイズのちょうど半分 (1.999582...) になることです...

次を使用してエンコーディングが同じであることを確認しようとしています:

sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)

しかし、違いはありません。新しいファイルは古いファイルの半分のサイズです...

4

1 に答える 1

1

StreamReader のエンコーディングはどこで設定していますsrか? これを明示的に行っておらず、ファイルの読み取りを実行する前に StreamWriter のエンコーディングを設定している場合 (私の最善の推測)、CurrentEncodingStreamReader の が変更される可能性があります (ソース ファイルから自動検出されます)。

MSDN からStreamReader.CurrentEncoding

現在のリーダーで使用されている現在の文字エンコーディング。エンコードの自動検出は Read メソッドの最初の呼び出しまで行われないため、StreamReader の Read メソッドの最初の呼び出しの後で、値が異なる可能性があります。

エンコーディングを決定するには、StreamReader を使用してファイルの最初の行を読み取ってから、次のようにします。

sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)
于 2013-04-12T13:49:24.400 に答える