none
フォルダー内のファイル数を求める RRS feed

  • 質問

  • フォルダー内のファイル数を求めるのは、どうすればいいでしょうか。
    Class DirectoryInfo、Class Directory、Class FileInfo、見当たりません。
    見落としているのでしょうか。
    2013年5月16日 0:20

回答

すべての返信

  • 「見当たりません」とはどこに何が見当たらないのでしょうか?
    2013年5月16日 0:47
  • > フォルダー内のファイル数

    直下のファイル数でしょうか。子階層孫階層まで辿ってのファイル数でしょうか。

    充分なアクセス権がある場合には、「My.Computer.FileSystem.GetFiles」メソッドでファイル名を列挙できるので、それを Count 拡張メソッド(要VB2008以上)などで拾ってみてください。

    > Class DirectoryInfo、Class Directory、Class FileInfo、見当たりません。

    提示いただいたクラス群は System.IO 名前空間に所属していますので、プロジェクトの「インポートされた名前空間」の画面で、"System.IO"にチェックを入れておいてください。そうすれば使えるようになるはずです。

    http://msdn.microsoft.com/ja-jp/library/3w4tctcf.aspx
    http://www.atmarkit.co.jp/fdotnet/dotnettips/645vbimports/vbimports.html

    もしもプロジェクト全体でインポートすると都合が悪い場合には、下記のいずれかの手法を用いることもできます。

    1. 変数宣言を「Dim di As DirectoryInfo」→「Dim di As System.IODirectoryInfo」に変更する
    2. 変数宣言 は As DirectoryInfo にしておいたまま、ファイルの先頭に「Imports System.IO」と書いておく
    2013年5月16日 0:55
  • こちらのページが分かりやすく参考になるかと思います。

    http://dobon.net/vb/dotnet/file/getfiles.html

    そして↑のなかの、filesに対して、files.Count() でファイル数が取得できます。
    • 編集済み kentahoga 2013年5月16日 1:32 Countの方法を追加
    • 回答としてマーク NipponMaru 2013年5月16日 4:14
    2013年5月16日 0:59
  • 皆様回答ありがとうございます。

    質問文が丁寧さに欠け、失礼しました。

    System.IO.Directory.GetFiles("D:\test", "*", System.IO.SearchOption.AllDirectories).Count
    で、うまくいきました。

    ありがとうございました。

    2013年5月16日 4:13