• ベストアンサー

ファイルの存在の確認をする方法

こんにちは。 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

質問者が選んだベストアンサー

  • ベストアンサー
  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.1

>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()の部分だけです。 従ってエラーが起こった=ファイルが無いと考えていいわけです。

hibachi
質問者

お礼

回答ありがとうございます。 この方法で実現できました。 ただ、VB.netの場合のFileAttr()の引数はstringでなくfile numberのようですね。また、私のプログラムの中では、OpenMode.OutputとOpenMode.Inputを使い分ける必要がありました。

その他の回答 (1)

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.2

基本的に#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

hibachi
質問者

お礼

回答ありがとうございます。この方法も便利そうですね。 覚えておきたいと思います。

関連するQ&A