こんにちは。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
fgets関数のEOFの扱い方について
-
【COBOL】read文でエラー
-
NAS上のファイルの使用中が解除...
-
VB.NETでUnzip32.DLLを使うには?
-
access テキストボックスの値取得
-
郵便番号を表示させる関数のエ...
-
アクセスのクエリでコンパイル...
-
VBA ExecuteExcel4Macro 型が一...
-
ワークブックに名前をつけて保...
-
データベースソフトのアクセス2...
-
VB6.0開発ソフトインストールで...
-
VB6 Dir関数で52エラー発生
-
FORTRANの実行エラーについて
-
「パス名が無効です」の発生原因
-
EXCELのVBAでWORDが開いてある...
-
PCにmicroSDカードを(USBで)差...
-
イベントが発生しない vba
-
VISIOは上位互換のはずなのにフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
アクセスのクエリでコンパイル...
-
Returnに対するGoSubがありません
-
NAS上のファイルの使用中が解除...
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
ACCESS VBAでのインポート
-
FTPの送信結果を検知したい
-
VBでファイルが開かれているか...
-
VB6 Dir関数で52エラー発生
-
【COBOL】read文でエラー
-
エクセル VBA dll 読み込...
-
VBA ExecuteExcel4Macro 型が一...
-
fgets関数のEOFの扱い方について
-
「複数の選択範囲に対して実行...
-
アクセスでイベントのロジック...
-
エクセルマクロでエラーの原因...
-
すでにファイルが開かれている...
おすすめ情報