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 を使用するように要求することと同じです。それ以外の場合は、Truncate を使用してください。ファイルが既に存在するが隠しファイルである場合、 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 に答える