2012-05-03 20 views
1

我有以下代碼:我應該檢查文件路徑流文本文件之前存在

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

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

這是做這個正確的方式?我是否需要進行一些檢查以確定文件是否存在?

回答

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時,如果該文件已存在,則會引發異常。您應該仍然檢查它是否存在,因爲我們不希望例外發生在第一位。

相關問題