【问题标题】:How to write singles() to a file如何将 singles() 写入文件
【发布时间】:2015-10-12 15:17:29
【问题描述】:

出于调试目的,我需要将一个 single() 数组写入一个新文件,但我没有找到任何示例。 由于我正在尝试调试某些东西,因此我不想相信自己的直觉。 谁能给我看看?

这是正确的方法吗? 我很害怕我可能引入了一个错误。

Public Sub WriteSinglesToFile(ByVal uSingles() As Single, ByVal uPath As String)

    Using fs As New FileStream(uPath, FileMode.Create)
        Using bw As New BinaryWriter(fs)
            For Each no In uSingles
                bw.Write(no)
            Next
        End Using
    End Using

End Sub

【问题讨论】:

    标签: .net arrays vb.net io stream


    【解决方案1】:

    这是一个单行:

    Public Sub WriteSinglesToFile(ByVal uSingles() As Single, ByVal uPath As String)
        'The "R" is for "Round-trip". 
        ' It ensures what you read back later matches what you had originally
        File.WriteAllLines(uPath, uSingles.Select(Function(s) s.ToString("R")))
    End Sub
    

    如果您想稍后再阅读这些内容:

    'Assumes file written by above code...
    Public Function ReadSinglesFromFile(ByVal uPath As String) As IEnumerable(Of Single)
        Return File.ReadLines(uPath).Select(Function(l) Single.Parse(l))
    End Sub
    

    【讨论】:

    • 请问往返是什么意思?
    • 浮点数不准确。如果您不小心,您写出到流中的内容可能不会以完全相同的数字读回。往返格式确保写出一个数字,该数字将作为相同的值读回,而不是稍有不同的数字。由于这是用于调试的,这可能不是问题,您可以使用任何您想要的格式。文档在这里:msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
    【解决方案2】:

    你可以使用BinaryWriter.Write方法来写Singles

    Public Sub WriteSinglesToFile(ByVal uSingles() As Single, ByVal uPath As String)
        Using writer As IO.BinaryWriter = New IO.BinaryWriter(IO.File.Open(uPath, IO.FileMode.Create))
            For Each uVal As Single In uSingles 
                writer.Write(uVal)
            Next
        End Using 
    End Sub
    

    【讨论】:

    • 这是用于调试的......他可能想要一些人类可读的东西。
    • @JoelCoehoorn 你可能是对的。我倾向于从字面上回答问题。
    • 有趣的是@Joel Coehoorn 的方法导致的输出与您的不同,所以我想知道哪个是正确的。
    • @tmighty 他们都是“对的”这段代码写的是 Singles 的二进制表示,Joel 写的是字符串表示。
    • 我希望该文件带有十六进制编辑器,因此我不寻找任何高级解决方案。那么我选择@Blackwood 的答案作为答案是否正确?
    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 2019-01-15
    • 1970-01-01
    相关资源
    最近更新 更多