FileSystem FilePutobject问题

时间:2013-05-16 17:05:10

标签: vb.net

我在VB.NET中使用“ FilePutObject ”编写了以下代码,以便在VB.NET中编写文件。

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 正确编写?

1 个答案:

答案 0 :(得分:4)

这是正常行为。您正在将对象输出到二进制文件 - 这不会生成纯文本文件,如果您想要生成文本文件(或者根本不是用于新开发),FilePutObject不是正确的工具。< / p>

在这种情况下,&#34;垃圾&#34;字符属于目标文件中的字符串描述符。通过查看写入文件的原始值,可以最好地理解您案例中的前四个字节:

hex edit view

前两个字节描述00 08的变量类型(参见:VarType) - vbString。接下来的两个给出字符串长度00 0e或14,因为字符串中有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