VB.NET 如何循环目录中的文件并导出到 DGV 中
How to loop files in a directory and export in DGV in VB.NET
我有我的代码:
For i As Integer = 0 To lstDir.Items.Count - 1
For Each File As String In Directory.GetFiles(lstDir.Items(i))
Fname = File.ToString.Substring(File.LastIndexOf("\") + 1)
i = +1
If File.Contains(".zip") Then
res = ""
For Each Str As Char In Fname
If IsNumeric(Str) Then
res = res & Str
End If
Next
For x As Integer = 0 To lstDir.Items.Count - 1
For Each newFile As String In Directory.GetFiles(lstDir.Items(x))
If newFile.Contains(res) Then
dgContents.Rows.Add(Fname)
End If
Next
Next
End If
Next
Next
假设我的目录包含这些文件:
abc123.pdf
def456.zip
ghi123.zip
jkl123.xml
mno456.pdf
pqr456.xml
我需要 select 所有 .zip 文件,获取 zip 文件名中的数字,然后在目录上再次循环以搜索具有相同数字的文件从 zip 然后将其添加到数据网格。我的问题是,我的代码显示如下输出:
def456.zip
def456.zip
def456.zip
ghi123.zip
ghi123.zip
ghi123.zip
而不是
def456.zip
mno456.pdf
pqr456.xml
ghi123.zip
abc123.pdf
jkl123.xml
请帮忙...
不知道我是否理解你。我建议你使用下一个代码。
此 Sub
用于循环遍历给定路径中扩展名为 .zip
的文件:
Imports System.IO
Public Sub GetFilesFromDir(path As String)
' Make a reference to a directory.
Dim di As New DirectoryInfo(path)
' Get a reference to each file in that directory.
Dim fiArr As FileInfo() = di.GetFiles()
' Display the names of the files.
Dim file As FileInfo
Dim fileName As String = ""
For Each file In fiArr
If file.Extension = ".zip" Then
Console.WriteLine("------------- {0} -----------", file.Name)
fileName = System.IO.Path.GetFileNameWithoutExtension(path & "\" & file.Name)
DisplayFilesByNumber(fiArr, fileName)
End If
Next
End Sub
DisplayFilesByNumber
是一个 Sub
,其中循环遍历包含给定字符串(在本例中为 fileName
中的数字)的文件。
Public Sub DisplayFilesByNumber(fiArr As FileInfo(), fileName As String)
For Each fileByNumber In fiArr
If fileByNumber.Name.Contains(GetNumbers(fileName)) Then
Console.WriteLine(fileByNumber)
End If
Next
End Sub
这个Sub
需要一个简单的函数来获取fileName
中的数字。
Imports.Text.RegularExpressions
Public Function GetNumbers(fileName As String) As String
GetNumbers = Regex.Replace(fileName, "[^0-9]", String.Empty)
End Function
这给出了下一个输出:
------------- def456.zip -----------
def456.zip
mno456.pdf
pqr456.xml
------------- ghi123.zip -----------
abc123.pdf
ghi123.zip
jkl123.xml
希望我理解正确。我没有将值存储在 DGV 中,但我相信您可以应对。
我有我的代码:
For i As Integer = 0 To lstDir.Items.Count - 1
For Each File As String In Directory.GetFiles(lstDir.Items(i))
Fname = File.ToString.Substring(File.LastIndexOf("\") + 1)
i = +1
If File.Contains(".zip") Then
res = ""
For Each Str As Char In Fname
If IsNumeric(Str) Then
res = res & Str
End If
Next
For x As Integer = 0 To lstDir.Items.Count - 1
For Each newFile As String In Directory.GetFiles(lstDir.Items(x))
If newFile.Contains(res) Then
dgContents.Rows.Add(Fname)
End If
Next
Next
End If
Next
Next
假设我的目录包含这些文件:
abc123.pdf
def456.zip
ghi123.zip
jkl123.xml
mno456.pdf
pqr456.xml
我需要 select 所有 .zip 文件,获取 zip 文件名中的数字,然后在目录上再次循环以搜索具有相同数字的文件从 zip 然后将其添加到数据网格。我的问题是,我的代码显示如下输出:
def456.zip
def456.zip
def456.zip
ghi123.zip
ghi123.zip
ghi123.zip
而不是
def456.zip
mno456.pdf
pqr456.xml
ghi123.zip
abc123.pdf
jkl123.xml
请帮忙...
不知道我是否理解你。我建议你使用下一个代码。
此 Sub
用于循环遍历给定路径中扩展名为 .zip
的文件:
Imports System.IO
Public Sub GetFilesFromDir(path As String)
' Make a reference to a directory.
Dim di As New DirectoryInfo(path)
' Get a reference to each file in that directory.
Dim fiArr As FileInfo() = di.GetFiles()
' Display the names of the files.
Dim file As FileInfo
Dim fileName As String = ""
For Each file In fiArr
If file.Extension = ".zip" Then
Console.WriteLine("------------- {0} -----------", file.Name)
fileName = System.IO.Path.GetFileNameWithoutExtension(path & "\" & file.Name)
DisplayFilesByNumber(fiArr, fileName)
End If
Next
End Sub
DisplayFilesByNumber
是一个 Sub
,其中循环遍历包含给定字符串(在本例中为 fileName
中的数字)的文件。
Public Sub DisplayFilesByNumber(fiArr As FileInfo(), fileName As String)
For Each fileByNumber In fiArr
If fileByNumber.Name.Contains(GetNumbers(fileName)) Then
Console.WriteLine(fileByNumber)
End If
Next
End Sub
这个Sub
需要一个简单的函数来获取fileName
中的数字。
Imports.Text.RegularExpressions
Public Function GetNumbers(fileName As String) As String
GetNumbers = Regex.Replace(fileName, "[^0-9]", String.Empty)
End Function
这给出了下一个输出:
------------- def456.zip -----------
def456.zip
mno456.pdf
pqr456.xml
------------- ghi123.zip -----------
abc123.pdf
ghi123.zip
jkl123.xml
希望我理解正确。我没有将值存储在 DGV 中,但我相信您可以应对。