Bra*_*don 7 .net vb.net io stringwriter
我有一个应用程序,如果该文件尚不存在,则会创建一个文本文件,然后向其写入内容.当我创建并立即写入文件时,它第一次工作得很好.我的问题是,下次执行此代码并且文件已经创建时,它会在我尝试写入文件时抛出异常.我得到"文件被另一个进程使用"错误.
所以我创建它之后似乎需要关闭文件?我不知道怎么做,但它可能非常简单.我会发布一些代码,但它不是必需的,我只是使用一个香草味的字符串构建器和流编写器.
Private Sub createFileLocations()
If Not Directory.Exists("./Path") Then
Directory.CreateDirectory("./Path")
End If
If clsGeneralSettings.Printer1 IsNot Nothing Then
If Not File.Exists("./Path/File1" & ".txt") Then
File.Create("./Path/File1" & ".txt")
End If
End If
End Sub
Private Sub AppendTextFile(randomId As String, PrintDate As Date, PrintName As String)
Try
Dim _stringBuilder As StringBuilder = New StringBuilder
Dim _StreamWriter As StreamWriter
Dim fileName As String
If PrintName = clsGeneralSettings.Printer1 Then
fileName = "./Path/File1" & ".txt"
qPrinter1.Enqueue(randomId)
If qPrinter1.Count > 10 Then
qPrinter1.Dequeue()
End If
_stringBuilder.AppendLine(PrintDate + " | " + randomId)
_StreamWriter = New StreamWriter(fileName, True)
End If
'Todo: Figure this out
Using _StreamWriter
_StreamWriter.Write(_stringBuilder.ToString)
_StreamWriter.Flush()
_StreamWriter.Close()
_stringBuilder.Clear()
End Using
Catch ex As Exception
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
Jeh*_*hof 14
有问题的代码/行就是这个
If Not File.Exists("./PalletQueue/Printer1" & ".txt") Then
File.Create("./PalletQueue/Printer1" & ".txt")
End If
Run Code Online (Sandbox Code Playgroud)
如果您想稍后写入该文件,File.Create将返回您需要关闭的FileStream.将代码更改为以下内容可以解决您的问题.
If Not File.Exists("./PalletQueue/Printer1" & ".txt") Then
Dim file as FileStream = File.Create("./PalletQueue/Printer1" & ".txt")
file.Close()
End If
Run Code Online (Sandbox Code Playgroud)