お世話になります。
開発環境は、WindowsXP、VB.NET2003 になります。
さっそく質問になりますが
あるフォルダ(例:C:\WorkFolder)の中に
あるファイル(例:test20071012.txt)が
存在するかを確認し、さらにそのファイル名を取得するには
どのような手法があるでしょうか?
上記の例のようにファイル名が固定であれば
ファイル名は既に分かっている事になるので
File.Exists でファイルの有無のみを確認できれば良いのですが、
その時によって西暦部分を変えたファイル名で保存されるらしいので・・・
そこで、イメージとしては、
先頭4桁が "test" となるテキストファイルの有無を確認し、
# "test*.txt" や "test????????.txt" といった表現になる?・・・んでしょうか?
存在する場合は、上記の例(test20071012.txt)のように
正式なファイル名として取得できればと思っています。
分かりづらい質問文かもしれませんが回答をつけて頂けると助かります。
よろしくお願いします。
ワイルドカードを使いたいなら、Directory.GetFiles を使えばいいんじゃいですか?
Hongliangさん、回答ありがとうございます。
早速、Directory.GetFiles について調査(勉強)して
以下のようなテストコードを作成してみました。
Dim wFileList As New ArrayList
Dim wGetFiles() As String
wGetFiles = System.IO.Directory.GetFiles("C:\WorkFolder", "test????????.txt")
wFileList.AddRange(wGetFiles)
これで該当ファイル名を取得するなりファイルコピーするなり色々利用できそうです。
基本的にはほぼ解決という事でいいかなと思っておりますが
関連する内容として追加質問してもよろしいでしょうか?
上記GetFiles部分の"????????"を数字限定にするためには
どのように記述すれば良いのでしょうか?調査(勉強)中に
たしかヘルプだったと思いますが、数字1文字は # で表せる
ような説明を読んだのですが # にしてもうまくいきませんでした。
それと、同じくGetFilesで取得したファイル名についてなんですが
フルパスではなくファイル名のみ取得するための良い方法などあるでしょうか?
かなり欲張った質問になっているとは思いますが
もしよければ、よろしくお願いします。
> 上記GetFiles部分の"????????"を数字限定にするためには
> どのように記述すれば良いのでしょうか?調査(勉強)中に
> たしかヘルプだったと思いますが、数字1文字は # で表せる
> ような説明を読んだのですが # にしてもうまくいきませんでした。
だったと思う、ような説明を読んだ、じゃなくてちゃんと確認しましょうよ。
使用できるワイルドカードについてはちゃんと該当メソッドに解説がありますから。
で、答えとしては一度ファイルの配列を取得した後、それぞれ正規表現を使って確認していくってことになるかな。
> それと、同じくGetFilesで取得したファイル名についてなんですが
> フルパスではなくファイル名のみ取得するための良い方法などあるでしょうか?
パスの文字列的操作については System.IO.Path クラスに色々メソッドがそろっています。
Hongliangさん、度々の回答ありがとうございます。
> だったと思う、ような説明を読んだ、じゃなくてちゃんと確認しましょうよ。
仰るとおりです。大変申し訳ありませんでした。
配属されたてで、開発環境のある専用のPCをまだ与えられていないため
調査(勉強)できる時間も限られてまして、こちらに投稿する際には、別の
PCで書き込んでいたことなどもあったもので…
# ですがこれは単なる言い訳ですね…以後気をつけます。
回答いただいた件ですが、
正規表現については、使用方など実はよく分かっていないこともあり
現在調査(勉強)です・・・↓を見つけました。私レベルには丁度良いかも^^;
http://www.mnet.ne.jp/~nakama/
ファイル名については、助言頂いたPathクラスを調べました。
GetFileName メソッドで実現できそうです。
色々とお世話になりました。
ツイート | ![]() |