1

我有以下代码:

Dim fs As FileStream
fs = New FileStream(path, FileMode.Create)

Dim sw As StreamWriter
sw = New StreamWriter(os)
sw.Write(something)
sw.Flush()

这是正确的方法吗?我是否需要进行一些检查以查看文件是否存在?

4

1 回答 1

1

我是否需要进行一些检查以查看文件是否存在?

这取决于你想要做什么。如果要覆盖文件,则不。FileMode.Create将始终覆盖现有文件,或者如果它不存在,则创建它:

创造

指定操作系统应该创建一个新文件。如果文件已经存在,它将被覆盖。此操作需要 FileIOPermissionAccess.Write 权限。System.IO.FileMode.Create相当于请求如果文件不存在就使用CreateNew;否则,使用截断。如果文件已经存在但为隐藏文件,则会抛出 UnauthorizedAccessException 异常。

如果您不想覆盖现有文件,那么是的,您应该检查它。像这样的东西:

If Not File.Exists(path) Then
    Using fs As New FileStream(path, FileMode.CreateNew), sw As New StreamWriter(fs)
        sw.Write("Something")
    End Using
End If

您还会注意到我使用CreateNew而不是Create. 这是一项额外的安全检查,可确保永远不会覆盖现有文件。使用CreateNew时,如果文件已存在,则会引发异常。但是,您仍然应该检查它是否存在,因为我们不希望首先发生异常。

于 2012-05-03T15:20:01.530 回答