在Vb.Net中,如何编写不带回车符的.csv文件?

在Vb.Net中,如何编写不带回车符的.csv文件?,vb.net,vb.net-2010,Vb.net,Vb.net 2010,我正在研究VS2012,Vb.Net-.NET4.0框架 我的Vb.Net代码正在读取.csv文件,预计它将在不返回回车的情况下重写该文件 但是现在,回车换行符在.csv文件中创建为新行。 如何删除CR LF Public Sub Test() Try Dim reader As StreamReader = New System.IO.StreamReader(File.OpenRead("D:\CSV\Test.csv"))

我正在研究VS2012,Vb.Net-.NET4.0框架

我的Vb.Net代码正在读取.csv文件,预计它将在不返回回车的情况下重写该文件

但是现在,回车换行符在.csv文件中创建为新行。 如何删除CR LF

  Public Sub Test()
            Try

                Dim reader As StreamReader = New System.IO.StreamReader(File.OpenRead("D:\CSV\Test.csv"))
                Dim listA As New List(Of String)()


                If File.Exists("d:\CSV\TestOut.csv") Then
                    File.Delete("d:\CSV\TestOut.csv")
                End If

                Dim sw As New StreamWriter("d:\CSV\TestOut.csv")
                Dim s As String = String.Empty

                While reader.Peek() >= 0
                    Dim line As String = reader.ReadLine()
                    Dim values As String() = line.Split(";"c)
                    listA.Add(values(0))
                    s = s + line + Chr(10)
                End While
                reader.Close()
                sw.WriteLine(s)
                sw.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

        End Sub
我看不出listA或values变量有什么好处。CRLF到LF任务不需要它们

见:

您应该对流使用Using关键字。离开时,EndUsing将关闭并处理流对象。即使抛出异常或返回值,它也会一直这样做;就像Try块中的Finally语句一样

当你像S= S+Loe+ChR10一样在结尾扩展字符串变量时,请考虑使用一个优化的String Bu建器。

当您需要列表中的第一个且仅第一个值line.Split{;c}时,2将分割第一个值,并将其余的大值作为一个字符串,而不是仅用于垃圾收集的数百个字符串对象。更合适的方法是使用line.Substring0,line.IndexOf;这根本不会产生休息


我不明白这与C.Removed tag有什么关系。我想添加一个示例csv文件和问题的屏幕截图,但我没有足够的点数上载文件。文件的BOM表已读取,然后也保存在数组中。这是有意的吗?也许文本阅读器更合适?还是bt只是转发到了其他功能?我只是把代码贴到这里。是的,此函数返回字节数组,该数组被写回FTP-Linux服务器中的CSV文件。专家们,再次感谢。我不得不把我原来的帖子改成一个更简单的问题。我相信这将帮助我解决我的问题。
Try
    If File.Exists("D:\CSV\Output.csv") Then File.Delete("D:\CSV\Output.csv")


    Using reader As New StreamReader(File.OpenRead("D:\CSV\Input.csv"))
    Using writer As New StreamWriter("D:\CSV\Output.csv")
        Dim strBldr As New Text.StringBuilder

        While reader.Peek > -1 ' Seen like this at MSDN page for Peek() function
            Dim line = reader.ReadLine
            ' If you really need the first value of each line, you can still do it here.
            strBldr.Append(line).Append(Chr(10))
        End While

        writer.Write(strBldr.ToString)
    End Using
    End Using
Catch ex As Exception
    MsgBox(ex.Message)
End Try