我正在修改用于仅将目录复制到另一个目录的文件复制程序。现在我想传递一个列表中的目录和文件,以便运行副本。
For Each _fromPath In CopyList
Dim FSinfo As FileSystemInfo()
If Directory.Exists(_fromPath) Then
Dim dir As New DirectoryInfo(_fromPath)
FSinfo = dir.GetFileSystemInfos
ElseIf File.Exists(_fromPath) Then
Dim file As New FileInfo(_fromPath)
FSinfo = file
End If
CountFiles(FSinfo)
Next
Private Function CountFiles(ByVal FSInfo As FileSystemInfo()) As Boolean
此代码适用于目录。为了将路径传递给CountFiles,它们必须位于FileSystemInfo中。无论如何都要将FileInfo作为FileSystemInfo进行转换。
我试过CType(file, FileSystemInfo)
,但它说Value of type 'System.IO.FileInfo' cannot be converted to '1-dimensional array of System.IO.FileSystemInfo'.
答案 0 :(得分:1)
一个问题是您正在尝试将对象(FileInfo
)转换为对象的ARRAY(FileSystemInfo()
),这是错误消息试图告诉您的内容。您可以编写一个重载函数来处理其中的一些:
' my Count functions return numeric values:
Private Function CountFiles(FSInfo As FileSystemInfo()) As Integer
Private Function CountFiles(FInfo As FileInfo) As Integer
在它们内部,FileSystemInfo可能会在循环中调用另一个以避免重复代码,或者它们可能根据它的编写方式调用一个通用过程。