2017-06-15 98 views
0

我有这应该复制选定的文件,其目录是写在txtbox1写在txtbox2导演的文件夹,如下所示的应用程序:从目录中的文件复制到另一个

代码:

Dim sourcepath As String = TextBox1.Text 
    Dim DestPath As String = TextBox2.Text 
    CopyDirectory(sourcepath, DestPath) 

称为子:

Private Shared Sub CopyDirectory(ByVal sourcePath As String, ByVal destPath As String) 
    If Not Directory.Exists(destPath) Then 
     Directory.CreateDirectory(destPath) 
    End If 
    For Each file__1 As String In Directory.GetFiles(Path.GetDirectoryName(sourcePath)) 
     Dim dest As String = Path.Combine(destPath, Path.GetFileName(file__1)) 
     File.Copy(file__1, dest) 
    Next 
    For Each folder As String In Directory.GetDirectories(Path.GetDirectoryName(sourcePath)) 
     Dim dest As String = Path.Combine(destPath, Path.GetFileName(folder)) 
     CopyDirectory(folder, dest) 
    Next 
End Sub 

这个代码将所有文件复制,不仅指定的一个。有人可以告诉我如何使这个副本只有选定的文件不是文件夹中的所有文件?

+2

有没有什么可以选择任何内容。选择*如何 - 用户应该选择它们?请澄清和阅读[问]和采取什么样的选择文件(S)[游览] – Plutonix

+0

?有无处任何种类的阵列,让说,选定的文件(S) – nelek

+0

感谢的话我已经更新了我的问题,希望它现在提供足够的信息。 –

回答

1

你把整个路径作为参数(是这样的:C:/someDirectory/filename.txt),而不是比较文件名在该目录中的文件名等。

而不是使用:

For Each file__1 As String In Directory.GetFiles(Path.GetDirectoryName(sourcePath)) 
    Dim dest As String = Path.Combine(destPath, Path.GetFileName(file__1)) 
    File.Copy(file__1, dest) 
Next 

尝试:

Dim sourceFileName = Path.GetFileName(sourcePath) 
For Each filePath As String in Directory.GetFiles(Path.GetDirectoryName(sourcePath)) 
    Dim filename As String = Path.GetFileName(filePath) 
    If sourceFileName = filename 
    'Do your copy code here 
    End If 
Next 
+2

它可能会更好使用[Path.GetFileName](https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v = vs.110).aspx)方法从路径中提取文件的名称,而不是自己手动分割字符串。 –

+0

啊,你说得对。我通常不使用文件名,所以我不确定Path有什么方法。 – Wenadin

相关问题