2

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

4

1 回答 1

4

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

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

十六进制编辑视图

前两个字节描述了变量类型(参见:VarType)——00 08这里是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 
于 2013-05-16T17:28:18.417 回答