はじめまして。
なかなかうまくいかず困っているので教えてください。
たとえば、C:\にテキストファイルが複数あったとして、プログラムで指定したパスにテキストファイルが何個あるか調査したいのですが、なかなか思うとおりにいきません。
どのようなプログラムで希望通りのことができるでしょうか?
下記は如何でしょうか?
http://hanatyan.sakura.ne.jp/
逆引きヘルプ一覧表
ファイル操作関係
FileSystemObject オブジェクトの使用例
指定のフォルダ内のファイル数を取得する
指定フォルダー以下の全ファイルを列挙
「ファイル数 取得 VB」で検索しました。
"*.txt"とかしてフィルタすればいいかな。
1.指定のフォルダ内の全ファイル数を取得
http://hanatyan.sakura.ne.jp/dotnet/file08.htm
テキストファイルというのが、拡張子が 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 とか。
*.txt は *.txthoge なども入るので、厳密に *.txt だけにしたいときは、
さらにチェックしないと。
みなさん、アドバイスありがとうございます。
テキストのカウントを取得することができました。
で、次の問題に悩んでいるのですが、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
と表示させるにはどうすればいいでしょうか?
For文の中にDir関数で読み込先のパスを指定したらできました。
みなさん、ありがとうございました。
> 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
ツイート | ![]() |