ファイルのカウント

解決


マスタング21  2008-06-11 03:01:44  No: 139873

はじめまして。

なかなかうまくいかず困っているので教えてください。
たとえば、C:\にテキストファイルが複数あったとして、プログラムで指定したパスにテキストファイルが何個あるか調査したいのですが、なかなか思うとおりにいきません。
どのようなプログラムで希望通りのことができるでしょうか?


6月  2008-06-11 03:52:33  No: 139874

下記は如何でしょうか?

http://hanatyan.sakura.ne.jp/
逆引きヘルプ一覧表 
  ファイル操作関係
    FileSystemObject オブジェクトの使用例
      指定のフォルダ内のファイル数を取得する  
      指定フォルダー以下の全ファイルを列挙


やじゅ  2008-06-11 03:56:15  No: 139875

「ファイル数 取得  VB」で検索しました。

"*.txt"とかしてフィルタすればいいかな。
1.指定のフォルダ内の全ファイル数を取得
http://hanatyan.sakura.ne.jp/dotnet/file08.htm


魔界の仮面弁士  2008-06-11 06:00:07  No: 139876

テキストファイルというのが、拡張子が txt であるファイル、という意味なら

'Dim cnt As Integer = My.Computer.FileSystem.GetFiles("C:\", FileIO.SearchOption.SearchAllSubDirectories, "*.txt").Count
Dim cnt As Integer = My.Computer.FileSystem.GetFiles("C:\", FileIO.SearchOption.SearchTopLevelOnly, "*.txt").Count

と書けます。(前者はサブフォルダまでも検索するので、時間がかかります)

さらにファイルの内容も含めて検索するなら、My.Computer.FileSystem.FindInFiles とか。


SFN  2008-06-11 23:35:27  No: 139877

*.txt は *.txthoge なども入るので、厳密に *.txt だけにしたいときは、
さらにチェックしないと。


マスタング21  2008-06-12 02:27:20  No: 139878

みなさん、アドバイスありがとうございます。

テキストのカウントを取得することができました。
で、次の問題に悩んでいるのですが、C:\にはaaa.txt、bbb.txt、ccc.txtの3つのテキストファイルがあり、これらをリストボックスにファイル名を表示するようにしたいのですが、

Dim i As Integer
Dim ContentItem As String
Dim cnt As Integer = My.Computer.FileSystem.GetFiles("c:\", FileIO.SearchOption.SearchTopLevelOnly, "*.txt").Count

 For i = 0 To cnt - 1
   ListBox.Items.Add(ContentItem)
 Next

とプログラムを作成すると、リストボックスには、

aaa.txt
aaa.txt
aaa.txt

と表示されてしまいます。

aaa.txt
bbb.txt
ccc.txt

と表示させるにはどうすればいいでしょうか?


マスタング21  2008-06-12 02:47:57  No: 139879

For文の中にDir関数で読み込先のパスを指定したらできました。

みなさん、ありがとうございました。


魔界の仮面弁士  2008-06-12 08:59:30  No: 139880

> For文の中にDir関数で読み込先のパスを指定したらできました。
情報共有のために、出来上がったコードを提示して頂けないでしょうか。

> リストボックスにファイル名を表示するようにしたい
ちなみに、FileListBox コントロールを使う方法もあります。

# まぁ、わざわざ VB6 互換クラスを持ち出すほどの物ではないので、
# マスタング21さんが使っている、今の方法で十分でしょうけれども。

'参照設定で「Microsoft.VisualBasic.Compatibility」を追加
Public Class Form1
    Private WithEvents FileListBox1 As New Microsoft.VisualBasic.Compatibility.VB6.FileListBox()
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FileListBox1.Location = New Point(60, 60)
        FileListBox1.Size = New Size(300, 150)

        FileListBox1.Path = "C:\"
        FileListBox1.FileName = "*.txt"

        Controls.Add(FileListBox1)
    End Sub
End Class


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加