将FileInfo转换为FileSystemInfo

时间:2014-05-18 16:25:41

标签: vb.net

我正在修改用于仅将目录复制到另一个目录的文件复制程序。现在我想传递一个列表中的目录和文件,以便运行副本。

    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'.

1 个答案:

答案 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可能会在循环中调用另一个以避免重复代码,或者它们可能根据它的编写方式调用一个通用过程。