2

VB.NET でファイルを書き込むために、VB.NET で「 FilePutObject 」を使用して次のコードを記述しました。

Dim str = "This is a Test"
FileSystem.FileOpen(1, "c:\temp\file1.txt", OpenMode.Binary)
FileSystem.FilePutObject(1, str, 2)
FileSystem.FileClose(1)

ファイルを確認すると、テキストの前にいくつかのジャンク文字が追加されていることがわかりました。

次に、ファイルを書き込むために「 FilePut 」を使用しました。

Dim str = "This is a Test"
FileSystem.FileOpen(1, "c:\temp\file1.txt", OpenMode.Binary)
FileSystem.FilePut(1, str, 2)
FileSystem.FileClose(1)

FilePutを使用している間、ファイル内のテキストは完全に書き込まれます 。この背後にある理由は何でしょうか? また、* FilePutは廃止されており、代わりにFilePutObjectを使用する必要があることもわかりました*。FilePutObjectを使用して正しく書き込むにはどうすればよいですか?

4

1 に答える 1

4

これは正常な動作です。オブジェクトをバイナリ ファイルに出力しています。これは純粋なテキスト ファイルを生成するものでFilePutObjectはなく、テキスト ファイルを生成する場合 (またはまったく新しい開発の場合) に使用する適切なツールではありません。

この場合、「ジャンク」文字は、オブジェクト ファイルの文字列記述子に属します。あなたの場合のこれらの最初の 4 バイトは、ファイルに書き込まれた生の値を見ることで最もよく理解できます。

16 進編集ビュー

最初の 2 バイトは、変数の型を記述します ( VarType00 08を参照) vbString00 0e文字列には 14 文字あるため、次の 2 つは文字列の長さ、または 14 を示します。

それらは、ファイルから複数のオブジェクトを読み取るときに、読み取り関数が各オブジェクトのタイプとサイズを識別できるように配置されているため、次のオブジェクトに到達する前に、読み取る量と停止する場所を認識できます。

テキスト ファイルを書きたい場合は、StreamWriterの使用を検討してください。

例えば ​​:

Dim str as String = "This is a Test"
Using sw As StreamWriter = New StreamWriter("c:\temp\file1.txt")
        sw.WriteLine(str)
End Using 
于 2013-05-16T17:28:18.417 に答える