我有以下代码:
Dim fs As FileStream
fs = New FileStream(path, FileMode.Create)
Dim sw As StreamWriter
sw = New StreamWriter(os)
sw.Write(something)
sw.Flush()
这是正确的方法吗?我是否需要进行一些检查以查看文件是否存在?
我是否需要进行一些检查以查看文件是否存在?
这取决于你想要做什么。如果要覆盖文件,则不。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
时,如果文件已存在,则会引发异常。但是,您仍然应该检查它是否存在,因为我们不希望首先发生异常。