我有一个可视化的基本程序,可以创建半周过程所必需的文件。这些文件是.bas文件(用于qbasic)和.lot文件(用于voxco自动化)。我可以在没有.bas文件的情况下生活,只需将其功能直接放入我的程序中即可。但是,我确实需要.lot文件。通常,这些文件是从旧文件复制并手动编辑的。你可以想象,这是乏味的。但是,我的程序创建的文件无法通过我运行它们的任何方式正常运行。当我将手动创建的文件与自动创建的文件进行比较时,差异很小甚至不存在。编码似乎也不是问题。我只是不知道为什么我的程序创建的文件在手动创建的文件正常工作时无法正常运行。
以下是创建.lot文件的代码:
Dim LotText As String
LotText = *removed*
Dim QuLines As String = Nothing
Dim Reader As New StreamReader(LotFilePath & OldStudy & ".LOT")
Dim SLine As String = Nothing
While Not Reader.EndOfStream
SLine = Reader.ReadLine()
If SLine.StartsWith("*QU") Then
QuLines = QuLines & SLine & vbCrLf
End If
End While
LotText = LotText & QuLines
Dim TempPath As String
TempPath = LotFilePath & "BackEnd\" & StudyID & ".LOT"
My.Computer.FileSystem.WriteAllText(TempPath, LotText, 0)
答案 0 :(得分:0)
当你说差异很小时 - 它们究竟是什么!?文件开头的单个字符可能会使整个事件失败。
过去我遇到过以这种方式将vbCrLf写入文件的问题;请尝试以下代码,看看它是否有任何改进。
Dim LotText As String = *removed*
' Create a list of strings for the output data
Dim QuLines As New Collections.Generic.List(Of String)
Dim Reader As New StreamReader(Path.Combine(LotFilePath, OldStudy & ".LOT"))
Dim SLine As String = Nothing
While Not Reader.EndOfStream
SLine = Reader.ReadLine()
If SLine.StartsWith("*QU") Then
' This line is desired; add it to our output list
QuLines.Add(SLine)
End If
End While
' Concatenate the existing data and the output; uses the system defined NewLine
LotText &= Environment.NewLine & String.Join(Environment.Newline, QuLines)
Dim TempPath As String = Path.Combine(LotFilePath, "BackEnd", StudyID & ".LOT")
My.Computer.FileSystem.WriteAllText(TempPath, LotText, 0)