我有这段代码。
Dim txtVern As String = String.Empty
Try
Using verSR As New StreamReader(appDataVersionLoc)
txtVern = verSR.ReadToEnd()
End Using
Catch ex As Exception
Dim verFile As System.IO.FileStream
verFile = System.IO.File.Create(appDataVersionLoc)
Dim wWFERes As DialogResult = MessageBox.Show("Version file missing/corrupt, created a new one.")
If My.Computer.FileSystem.FileExists(appDataVersionLoc) Then
My.Computer.FileSystem.WriteAllText(appDataVersionLoc, "0.0.0.0", True)
End If
End Try
但是当它尝试执行My.Computer.FileSystem.WriteAllText(appDataVersionLoc, "0.0.0.0", True)
时,我收到此错误:
该进程无法访问文件'C:\ Users \ Dubstaphone \ AppData \ Roaming \ TheArena \ version.txt',因为它正由另一个进程使用。
如何避免这种情况?我做的是我创建了一个名为“version.txt”的文本文件,如果它还不存在的话。现在我正在尝试写“0.0.0.0”,但它给了我这个错误。顺便说一句,“appDataVersionLoc”等于GetFolderPath(SpecialFolder.ApplicationData) & "\TheArena\version.txt"
这个变量适用于其他一切。
谢谢!
P.S。
我是一个完整的菜鸟。
答案 0 :(得分:1)
System.IO.File.Create
或My.Computer.FileSystem.WriteAllText
可能仍会锁定文件。使用System.IO.File
WriteAllText
和Using
声明。
如果您使用Stream,则应关闭/处置它。更好的是,在处理文件时总是使用Using
语句。
编辑:
创建文件的示例
Using File.Create(path)
End Using
If File.Exists(appDataVersionLoc) Then
File.WriteAllText(appDataVersionLoc, "0.0.0.0")
End If
或
Dim appDataFile = File.Create(path)
appDataFile.Close