DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイルの検索

  • 題名: ファイルの検索
  • 著者: トマトスープ
  • 日時: 2012/02/10 14:36:19
  • ID: 29808
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[OS:XP 言語:VB.NET VisualBasic2008]
分類:[.NET]

お世話になっております。

現在、ファイルの検索のコードを組んでいるのですが
中々解決できないためお力をお貸しください。

まずはコードですが

Folder_PATH = "C:\テスト\フォルダ\"

'ファイルをすべて取得
'ワイルドカード"*"は、すべてのファイルを意味する
Dim files As String() = System.IO.Directory.GetFiles( _
Folder_PATH & , "**********.pdf", System.IO.SearchOption.AllDirectories)

'フォルダ名取得
cmb_list.Items.AddRange(files)

cmb_listはコンボボックスです。

このコードだと「C:\テスト\フォルダ」から最下層のフォルダまで
pdfファイルを検索してコンボボックスのアイテムとして表示する
ことまではできています。

しかし、pdfファイルの中でもコンボボックスのアイテムとして
表示したくない物が含まれてしまいます。

そこで「.pdf」の前のファイル名が10文字の物のみ表示させるように
コーディングしたいのですがその方法がわかりません。

お分かりになるかたいらっしゃいましたらどうぞよろしくお願いします。
2012/02/10(Fri) 14:43:57 編集(投稿者)
2012/02/10(Fri) 14:43:53 編集(投稿者)

■No29808に返信(トマトスープさんの記事)
> お世話になっております。
>
> 現在、ファイルの検索のコードを組んでいるのですが
> 中々解決できないためお力をお貸しください。
>
> まずはコードですが
>
> Folder_PATH = "C:\テスト\フォルダ\"
>
> 'ファイルをすべて取得
> 'ワイルドカード"*"は、すべてのファイルを意味する
> Dim files As String() = System.IO.Directory.GetFiles( _
> Folder_PATH & , "**********.pdf", System.IO.SearchOption.AllDirectories)
>
> 'フォルダ名取得
> cmb_list.Items.AddRange(files)
>
> cmb_listはコンボボックスです。
>
> このコードだと「C:\テスト\フォルダ」から最下層のフォルダまで
> pdfファイルを検索してコンボボックスのアイテムとして表示する
> ことまではできています。
>
> しかし、pdfファイルの中でもコンボボックスのアイテムとして
> 表示したくない物が含まれてしまいます。
>
> そこで「.pdf」の前のファイル名が10文字の物のみ表示させるように
> コーディングしたいのですがその方法がわかりません。
>
> お分かりになるかたいらっしゃいましたらどうぞよろしくお願いします。
>

確か、GetFilesでは、正規表現が使えなかったと思うので・・・

1.まずは、現在の方法で全てを取得

2.ループで一つずつのファイル名を正規表現でチェックし
 該当する物のみをコンボボックスへ追加する

*AddRangeの様に、一撃で追加ではないので
現状よりレスポンスは悪くなると思いますが・・・
Dim files = Array.FindAll( _
    System.IO.Directory.GetFiles("C:\テスト\フォルダ\", "*.pdf", System.IO.SearchOption.AllDirectories), _
    Function(file) System.IO.Path.GetFileNameWithoutExtension(file).Length = 10)

Dim files = ( _
    From file In System.IO.Directory.GetFiles("C:\テスト\フォルダ\", "*.pdf", System.IO.SearchOption.AllDirectories) _
    Where System.IO.Path.GetFileNameWithoutExtension(file).Length = 10 _
    Select file).ToArray()

Array.FindAllやLINQでやる方法もあります。
もりお様

ご回答ありがとうございます。

色々と方法を考えてみたのですがもりお様に提示していただいている
方法が一番シンプルで今回はそちらを使ってみようかと思います。

サンプルまで載せて頂き大変助かります。

ありがとうございました。
  • 題名: Re[4]: ファイルの検索
  • 著者: トマトスープ
  • 日時: 2012/02/14 14:34:32
  • ID: 29835
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
解決済みです
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板