
こんにちは。
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
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()の部分だけです。
従ってエラーが起こった=ファイルが無いと考えていいわけです。
回答ありがとうございます。
この方法で実現できました。
ただ、VB.netの場合のFileAttr()の引数はstringでなくfile numberのようですね。また、私のプログラムの中では、OpenMode.OutputとOpenMode.Inputを使い分ける必要がありました。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで質問です。 ハイパー...
-
「パス名が無効です」の発生原因
-
gccを行ってもexeファイルが生...
-
VB6 Dir関数で52エラー発生
-
VBから参照できないCのDLLを使...
-
Access2013にてドラッグ&ドロ...
-
ネットワーク上でのファイル操...
-
Returnに対するGoSubがありません
-
matlabでexcelを閉じる
-
EXCELVBAでONEDRIVE上への保管...
-
access テキストボックスの値取得
-
fgets関数のEOFの扱い方について
-
IIS7でIIS6で動いていたASPア...
-
Excel 2003 のエラーメッセージ
-
FileSearchがExcel2010でできない
-
システムのシャットダウンは既...
-
Request.BinaryReadでのエラー
-
アクセスのクエリでコンパイル...
-
csvファイルをvbaで読み...
-
freadでデータがない場合の読込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで質問です。 ハイパー...
-
Excel 2003 のエラーメッセージ
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
【COBOL】read文でエラー
-
アクセスのクエリでコンパイル...
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
VBから参照できないCのDLLを使...
-
NAS上のファイルの使用中が解除...
-
データベースソフトのアクセス2...
-
VB6 Dir関数で52エラー発生
-
【関数】同じ関数なのに、エラ...
-
gccを行ってもexeファイルが生...
-
FORTRANの実行エラーについて
-
FTPの送信結果を検知したい
-
fgets関数のEOFの扱い方について
-
ASP.NET 2.0にてアプリが動作し...
-
VBでファイルが開かれているか...
おすすめ情報