vb.net - 单字符字符串未正确写入文件

标签 vb.net file-io

当我的代码出现问题时,我将数组的内容写入文件,如下所示:-

Private Sub DumpArray (ByRef array_to_dump(,) As MyEnum, ByVal file_name As String)

    Dim sw As StreamWriter = New StreamWriter(file_name)

    For i As Integer = array_to_dump.GetLowerBound(0) To array_to_dump.GetUpperBound(0)

        For j As Integer = array_to_dump.GetLowerBound(1) To array_to_dump.GetUpperBound(1)

            If array_to_dump(i, j) = MyEnum.This Then
                sw.Write("Fred")
            Else
                sw.Write("Bert")
            End If

            sw.Write(vbTab)

        Next j

        sw.WriteLine

    Next i

    sw.Flush
    sw.Close

End Sub

这会产生我期望的输出;在当前情况下,文件填充为“Fred”,并用制表符分隔。但是,如果我将代码的业务端更改为:-

            If array_to_dump(i, j) = MyEnum.This Then
                sw.Write("1")
            Else
                sw.Write("0")
            End If

该文件充满了非打印字符,这些字符在记事本中显示为小框,而不是我期望的由制表符分隔的“0”行。任何其他单字符字符串对都会执行相同的操作。

虽然这不是一个紧迫的重要问题,但我很好奇为什么会这样。有谁知道吗?

最佳答案

您必须设置 encoding当你像 @DavidSdot 所说的那样声明你的 SteamWriter 时,会变成其他东西。就像这样:

Dim writer As StreamWriter = New StreamWriter(file_name, Encoding.Default)

摆弄一下该特性,您可能会发现一个很好的值(value)。我不是编码专家,但这应该是您问题的罪魁祸首。

关于vb.net - 单字符字符串未正确写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29768536/

相关文章:

Java "No space left on device"但磁盘上有足够的空间吗?

vb.net - linq 查询只读

.net - 无法为 SOAP 调用的 SSL/TLS 建立安全通道

c# - 是否存在任何NON-GPL/AGPL病毒扫描库?

c# - 为什么 VB 的 LINQ 关键字比 C# 多?

vb.net - Solidworks EPDM API IEdmEnumeratorVariable5::SetVar 未按预期工作

c - 读取Linux内核空间中的字符设备

java - 在Java中,如何只在内存中创建一个临时文件来解析xml?

c - 数组中的文件指针

c - 从文件初始化嵌套结构的值