Gewusst wie: Kopieren von Verzeichnissen
Dieses Beispiel zeigt, wie E/A-Klassen zum Kopieren eines Verzeichnisses von einem Speicherort an einen anderen verwendet werden. In diesem Beispiel kann der Benutzer angeben, ob auch die Unterverzeichnisse kopiert werden sollen. Wenn dies der Fall ist, werden die Unterverzeichnisse von der Methode in diesem Beispiel rekursiv kopiert, indem sie sich selbst so lange für jedes weitere Unterverzeichnis aufruft, bis alle kopiert wurden.
Beispiel
Imports System
Imports System.IO
Class DirectoryCopyExample
Shared Sub Main()
DirectoryCopy(".", ".\\temp", True)
End Sub 'Main
Private Shared Sub DirectoryCopy( _
ByVal sourceDirName As String, _
ByVal destDirName As String, _
ByVal copySubDirs As Boolean)
Dim dir As DirectoryInfo = New DirectoryInfo(sourceDirName)
Dim dirs As DirectoryInfo() = dir.GetDirectories()
' If the source directory does not exist, throw an exception.
If Not dir.Exists Then
Throw New DirectoryNotFoundException( _
"Source directory does not exist or could not be found: " _
+ sourceDirName)
End If
' If the destination directory does not exist, create it.
If Not Directory.Exists(destDirName) Then
Directory.CreateDirectory(destDirName)
End If
' Get the file contents of the directory to copy.
Dim files As FileInfo() = dir.GetFiles()
For Each file In files
' Create the path to the new copy of the file.
Dim temppath As String = Path.Combine(destDirName, file.Name)
' Copy the file.
file.CopyTo(temppath, False)
Next file
' If copySubDirs is true, copy the subdirectories.
If copySubDirs Then
For Each subdir In dirs
' Create the subdirectory.
Dim temppath As String = _
Path.Combine(destDirName, subdir.Name)
' Copy the subdirectories.
DirectoryCopy(subdir.FullName, temppath, copySubDirs)
Next subdir
End If
End Sub
End Class
using System;
using System.IO;
class DirectoryCopyExample
{
static void Main()
{
DirectoryCopy(".", @".\temp", true);
}
private static void DirectoryCopy(
string sourceDirName, string destDirName, bool copySubDirs)
{
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
DirectoryInfo[] dirs = dir.GetDirectories();
// If the source directory does not exist, throw an exception.
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourceDirName);
}
// If the destination directory does not exist, create it.
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
}
// Get the file contents of the directory to copy.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
// Create the path to the new copy of the file.
string temppath = Path.Combine(destDirName, file.Name);
// Copy the file.
file.CopyTo(temppath, false);
}
// If copySubDirs is true, copy the subdirectories.
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
// Create the subdirectory.
string temppath = Path.Combine(destDirName, subdir.Name);
// Copy the subdirectories.
DirectoryCopy(subdir.FullName, temppath, copySubDirs);
}
}
}
}
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer Verzeichnisauflistung