- ベストアンサー
ファイルの存在の確認をする方法
こんにちは。 VB.netでプログラミングしているんですが、ファイル処理について質問があります。ファイルを保存する際に、よく「すでにファイルが存在します。上書きしますか?」と聞いてきますよね。これを実現するにはどんな方法があるでしょうか?ただし、コモンダイアログは使いません。FileOpen、FileCloseで実現したいのです。 以下のプログラムをどのように変えたらいいでしょうか?ご教授お願いいたします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click FileOpen(1, Format(Now, "yyyyMMdd") & " .txt", OpenMode.Output) PrintLine(1, "test") FileClose(1) End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>FileOpen、FileCloseで実現したいのです。 VB.netは使ったことが無いのですが(^^; 通常は、こういった場合エラートラップを使用します。 public function IsFileExist(strPath as string) as boolean IsFileExist=True on error goto err_trap: call GetAttr(strPath) 'VB.net の場合FileAttr() exit function err_trap: IsFileExist=false end function ファイルをいちいち開かなくても、GetAttr()などの関数でファイル属性を読み取ることで、そのファイルが存在する(厳密に言うとアクセス可能)かどうかを判定できます。 また、エラートラップを使用する場合は、起こったエラーを判定する必要がありますが こういった関数の場合、エラーが起こりえるのはGetAttr()の部分だけです。 従ってエラーが起こった=ファイルが無いと考えていいわけです。
その他の回答 (1)
- palmmy
- ベストアンサー率38% (841/2169)
基本的に#1さんと同じです。 私の場合は、FileLenを使っています。 ファイルサイズの取得と、ファイルの有無判定を共用でやっています。 0以上が戻ればファイル有り -1ならファイルなし FileOpen、FileCloseで書くとき固定長であれば、 レコードサイズでファイルサイズを割れば件数も出せます。 家に持ち帰ってないのでうろ覚えですが、下記のような事をやったと思います。 Function getFileLen(strFileName as String) as Long On Error goto err_trap: getFileLen = FileLen(strFileName) Exit Function err_trap: getFileLen = -1 Exit Function End Sub
お礼
回答ありがとうございます。この方法も便利そうですね。 覚えておきたいと思います。
お礼
回答ありがとうございます。 この方法で実現できました。 ただ、VB.netの場合のFileAttr()の引数はstringでなくfile numberのようですね。また、私のプログラムの中では、OpenMode.OutputとOpenMode.Inputを使い分ける必要がありました。