人生のプチ美学を教えてください!!

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

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

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

お礼日時:2004/07/25 22:28

基本的に#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
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/07/25 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!