2017-06-15 9 views
0

ich eine Anwendung, die eine ausgewählte Datei, deren Verzeichnis kopieren soll, wird in txtbox1 in einen Ordner des Regisseurs in txtbox2 geschrieben wie folgt:Kopieren einer Datei aus einem Verzeichnis zu einem anderen

Code:

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

Genannt sub:

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 

Dieser Code kopiert alle Dateien, die nicht bestimmungsgemäße nur einen. Kann mir bitte jemand sagen, wie man diese Unterkopie nur mit der ausgewählten Datei nicht alle Dateien im Ordner anlegt?

+2

Es gibt nichts, es gibt nichts zu wählen. Ausgewählt * wie - soll der Benutzer sie auswählen? Bitte geklärt und gelesen [fragen] und nehmen Sie die [Tour] – Plutonix

+0

was sind ausgewählte Datei (en)? Es gibt keine Art von Array von, sagen wir, ausgewählte Datei (en) – nelek

+0

Danke für die Bemerkung Ich habe meine Frage aktualisiert, hoffe, dass sie jetzt genug Informationen zur Verfügung stellt. –

Antwort

1

Sie nehmen den gesamten Pfad als Argument (etwa: C: /someDirectory/filename.txt) und vergleichen den Dateinamen nicht mit den anderen Dateinamen in diesem Verzeichnis.

Statt mit:

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 

Versuchen:

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

Es wäre wahrscheinlich besser, die [Path.GetFileName] (https://msdn.microsoft.com/en-us/library/system.io.path.getfilename (v = vs.110) .aspx) -Methode für Extrahieren des Namens einer Datei aus einem Pfad im Gegensatz zum manuellen Teilen der Zeichenfolge selbst. –

+0

Ah, du hast Recht. Ich arbeite normalerweise nicht mit Dateinamen, also war ich mir nicht sicher, welche Methoden Path hatte. – Wenadin

Verwandte Themen