在将文本传输到文件之前,我应该检查文件路径是否存在

时间:2012-05-03 15:15:19

标签: vb.net file-io

我有以下代码:

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

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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时,如果文件已存在,则会引发异常。但是,您仍应检查它是否存在,因为我们不希望首先发生异常。