检查文件是否存在,如果存在则复制

时间:2019-07-19 16:33:48

标签: vb.net

我一直在网上搜索并尝试找到的所有代码。我的代码应该很简单,但是无法正常工作。我正在使用一个列表来存储图像字符串(但是它们没有扩展名)。我想测试图像文件是否存在于文件夹中,并且是否将其复制。如果未使用图像名称写入文件。我得到的结果是所有文件都不存在。但是我检查了一下,文件在那里。

For Each image In GraphicList
    ImgFile = ImgLocation & "\" & image & ".*"
    Dim MoveFile As String
    MoveFile = createFigFolder & "\" & image & ".*"

    If Not System.IO.File.Exists(ImgFile) Then
        Debug.Write("File does not exists : " & ImgFile & vbCrLf)
        ' file does not exist
    Else
        Debug.Write("File EXISTS : " & ImgFile & vbCrLf)
        System.IO.File.Copy(ImgFile, MoveFile)
    End If
Next

这是编写GraphicList的代码

Private Sub CreateGraphicsFunction(sender As Object, e As EventArgs)
    Dim Regex = New Regex("infoEntityIdent=""(ICN.+?)[""].*?[>]")

    Dim ICNFiles = Directory.EnumerateFiles(MoveToPath, "*.*", SearchOption.AllDirectories)

    For Each tFile In ICNFiles
        Dim input = File.ReadAllText(tFile)

        Dim match = Regex.Match(input)
        If match.Success Then
            GraphicList.Add(match.Groups(1).Value)
            Dim Regex2 = New Regex("<!ENTITY " & match.Groups(1).Value & "  SYSTEM ""(ICN.*?[.]\w.+)")
            Dim sysFileMatch = Regex2.Match(input)
            If sysFileMatch.Success Then
                ICNList.Add(sysFileMatch.Groups(1).Value)
                Debug.Write("found ICN " & sysFileMatch.Groups(1).Value)
            End If
        End If
    Next
End Sub

新代码可循环遍历数组,并查看其条目是否与图形列表中的字符串匹配。该代码无效,但我认为它与我想要的类似。

Dim fileEntries As String() = Directory.GetFiles(ImgLocation, ".*")
' Process the list of files found in the directory. '
Dim fileName As String

For Each fileName In fileEntries
    If ICNList.Contains(fileName) Then
        Debug.Write("File EXISTS : " & fileName & vbCrLf)
    Else
        Debug.Write("File does not exists : " & fileName & vbCrLf)
    End If
Next

1 个答案:

答案 0 :(得分:1)

使用不带扩展名的文件名作为键,将文件名列表加入文件的源列表中。然后遍历结果并复制每个结果

Dim fileNames = System.IO.Directory.GetFiles(imgLocation).Join(
    graphicList, 
    Function(p) Path.GetFileNameWithoutExtension(p), 
    Function(f) f, 
    Function(p, f) p)

' create the directory first (does nothing if it already exists)
Directory.CreateDirectory(newLocation)

' copy each file
For Each fileName In fileNames
    System.IO.File.Copy(fileName, Path.Combine(newLocation, Path.GetFileName(fileName)))
Next