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