如何在没有IO异常的情况下输出到文本文件?

时间:2013-03-31 07:00:54

标签: vb.net

我有这段代码。

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。

我是一个完整的菜鸟。

1 个答案:

答案 0 :(得分:1)

System.IO.File.CreateMy.Computer.FileSystem.WriteAllText可能仍会锁定文件。使用System.IO.File WriteAllTextUsing声明。

如果您使用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