PCだい「ちゅき」

気がつけば庶事手伝い

目次

Blog 利用状況

ニュース

・R1 UiPath Japan MVP 2019 を受賞しました
・H24/01/02
 Microsoft MVPを受賞しました
・H23/11/18
 MCTの憂鬱さんと相互リンクを張っていただきました^^
・H23/09/10
 プログラミング生放送でスピーカーさせていただきました^^ ・H22/12/18
 わんくま同盟でスピーカしました^^
さて、来年はどんな年になるかな。予想が当たるといいなぁ。
・H22/07/17
 わんくま同盟でスピーカしました^^
技術系のセッションは久しぶり。VB! VB!
・H22/03/13
 Tech FieldersでLTのスピーカしました^^
・H21/12/12
 わんくま同盟でスピーカしました^^
最近はずっとLT担当だったので、ちょっと新鮮でした^^
・H20/11/18
 Tech Fielders セミナー 大阪の
 Lightning Talkで優勝しました^^
・H20/8/23
 わんくま同盟で2回目のスピーカしちゃいました
 WCFと戯れてみました^^
・H20/5/17
 わんくま同盟でスピーカしちゃいました^^
 ちゃんとスピーカー持参しましたよんw
・H20/2/22
 なめ猫の参加証もらいました^^
・H20/1/22
 テンプレートを変えてみました^^
・H19/7/23
 ACEプログラムで、ナップサックをもらった上、工具セットももらえることになりました^^
・H19/1/11
 1が並ぶ縁起の良い日に投稿開始!。今後ともお付き合いよろしくお願いします
・H18/10/29
 参加させていただきました^^
ド・初心者ですがどうぞよろしくお願いします。

↓うーん、仕事しろ^^;
Chukiの脳内メーター

Chukiの脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

.NETの関数を使ってワイルドカードを使用したファイルの存在チェックがしたい!

【備忘録用】UiPathとかRPAでファイルの存在チェックをワイルドカードを付けて確認したかったとき用。

File.Existsメソッドはワイルドカードが効きません。

.NETはWindowsだけのおもちゃとか思ってるアンポンタンさんはいないと思いますが、その前提としてすべてのルールがWindows OSに準拠するわけでないことを忘れがちです。
もし、”*”がワイルドカード一択になると、”*”がファイル名として許される処理系で動かなくなってしまいます。
このためかとな、と勝手に思っています。

ではどうするか・・・。

1)特定ディレクトリにあるファイルをワイルドカードを使って取得する

あんまり細かく考えないでもいいんですよね。Directory.GetFiles の第2引数は検索条件が指定出来てこちらはワイルドカードが効きます。

Dim arFiles = System.IO.Directory.GetFiles(“C:\temp",”hogehoge*.txt)

これでOKです。ファイルが存在しなくても空の配列返してくれるのでヌルポでガっしなくても済みます。
注:ディレクトリが存在しないとエラー扱いで例外が発生します。存在が怪しい場合Directory.Existsメソッドで存在確認を行ってください。

2)結果の確認方法

1.Countメソッドを使用する方法

すぐに思いつくのは、次の通りです。存在しなくてもエラーが出ず0を返してくれるので安心です。

arFiles.Count() > 0

2. Anyメソッドを使用する方法(こちらがオススメ)

こちらがオススメです。DataTableに入っている行などのコレクション型は自身の個数を持ってるのでそこから取得します。
単純な配列は、すべての個数をクルクル回して確認するのでイロイロともったいないです。

そこで、Anyメソッド。メソッド内で一つでも要素があればtrueを返すのですんごい高速です。

arFiles.Any()

【ご参考】UiPathだとこんな感じ


Containsメソッドなんかも知っておくと、配列内で特定のものが含まれているかを調べたいときにとても便利です。
配列の場合、頭からくるくる回しでチェックするので繰り返しで回すのと処理は同じですが、システムがやってくれる分高速です。

投稿日時 : 2020年6月30日 11:26

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント