在Vb.Net中,如何编写不带回车符的.csv文件?
我正在研究VS2012,Vb.Net-.NET4.0框架 我的Vb.Net代码正在读取.csv文件,预计它将在不返回回车的情况下重写该文件 但是现在,回车换行符在.csv文件中创建为新行。 如何删除CR LF在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"))
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