Come si copia una directory in un'unità diversa in C#?Copia una directory in un'unità diversa
risposta
È possibile utilizzare questo codice per eseguire la vostra operazione:
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// Check if the target directory exists, if not, create it.
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Copy each file into it’s new directory.
foreach (FileInfo fi in source.GetFiles())
{
Console.WriteLine(@”Copying {0}\{1}”, target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
sotto uno è anche un bene:
static public void CopyFolder(string sourceFolder, string destFolder)
{
if (!Directory.Exists(destFolder))
Directory.CreateDirectory(destFolder);
string[] files = Directory.GetFiles(sourceFolder);
foreach (string file in files)
{
string name = Path.GetFileName(file);
string dest = Path.Combine(destFolder, name);
File.Copy(file, dest);
}
string[] folders = Directory.GetDirectories(sourceFolder);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(destFolder, name);
CopyFolder(folder, dest);
}
}
è possibile utilizzare questa funzione anche:
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory(sourceDir, destDir);
FileSystem.CopyDirectory
è in uno spazio dei nomi VB e l'assemblaggio, ma che probabilmente non importa.
Procedura: Copia, Elimina, e spostare file e cartelle (C# Programming Guide)
http://msdn.microsoft.com/en-us/library/cc148994.aspx
C# Copia cartella ricorsivamente
http://www.csharp411.com/c-copy-folder-recursively/
Questo non mostra come eseguire una copia ricorsiva. –
@ Matteo: risolto. –
private String path;
public int copyAllContents(String destinationFolder, ProgressBar progressBar)
{
int countCopyFiles = 0;
if (!Directory.Exists(destinationFolder))
{ Directory.CreateDirectory(destinationFolder); }
String[] allFilesForCurrentFolder = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly);
String[] subFoldersAllpath = Directory.GetDirectories(path);
for (int i = 0; i < allFilesForCurrentFolder.Length; i++)
{
try { File.Copy(allFilesForCurrentFolder[i], destinationFolder + "\\" + Path.GetFileName(allFilesForCurrentFolder[i])); countCopyFiles++; progressBar.Value++; }
catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); }
}
if (subFoldersAllpath.Length == 0)
{ return allFilesForCurrentFolder.Length; };
for (int i = 0; i < subFoldersAllpath.Length; i++)
{
this.path = subFoldersAllpath[i];
String[] subFoldersAllpathLastFolder = subFoldersAllpath[i].Split('\\');
countCopyFiles += this.copyAllContents(destinationFolder + "\\" + subFoldersAllpathLastFolder[subFoldersAllpathLastFolder.Length - 1], progressBar);
}
return countCopyFiles;
}
È molto più semplice per gli altri leggere la tua risposta se si formatta il codice correttamente. Inoltre, è meglio aggiungere un po 'di contesto al tuo codice. Scrivi sul motivo per cui pensi che questa sia una buona risposta o che cosa faccia in modo diverso rispetto alle altre risposte. – mdewitt
Ecco un'estensione che funzionerà in .NET 4.0+
var source = new DirectoryInfo(@"C:\Test");
var destination = new DirectoryInfo(@"E:\Test");
source.CopyTo(destination);
Includere questo file nel tuo progetto
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace System.IO
{
public static class DirectoryInfoExtensions
{
public static void CopyTo(this DirectoryInfo source, DirectoryInfo target)
{
if (!target.Exists)
target.Create();
foreach (var file in source.GetFiles())
file.CopyTo(Path.Combine(target.FullName, file.Name), true);
foreach (var subdir in source.GetDirectories())
subdir.CopyTo(target.CreateSubdirectory(subdir.Name));
}
}
}
Ecco un approccio che copia una directory ricorsivamente come una funzione async
:
public static async Task CopyDirectoryAsync(string sourceDirectory, string destinationDirectory)
{
if (!Directory.Exists(destinationDirectory))
Directory.CreateDirectory(destinationDirectory);
foreach (var file in Directory.GetFiles(sourceDirectory))
{
var name = Path.GetFileName(file);
var dest = Path.Combine(destinationDirectory, name);
await CopyFileAsync(file, dest);
}
foreach (var subdir in Directory.GetDirectories(sourceDirectory))
{
var name = Path.GetFileName(subdir);
var dest = Path.Combine(destinationDirectory, name);
await CopyDirectoryAsync(subdir, dest);
}
}
public static async Task CopyFileAsync(string sourceFile, string destinationFile)
{
using (var sourceStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
using (var destinationStream = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
await sourceStream.CopyToAsync(destinationStream);
}
- 1. Hadoop copia una directory?
- 2. XCopia una directory a una destinazione diversa
- 3. Copia una directory utilizzando NSIS.
- 4. Eseguire un EXE da una directory diversa?
- 5. importare un file da una directory diversa
- 6. Copia un elenco di file in una directory
- 7. Copia file in un'altra directory
- 8. Mantenere una struttura di directory diversa in diversi rami git
- 9. Esecuzione del compositore in una directory diversa dalla corrente
- 10. script Nuget a directory diversa
- 11. symlink-copia di una gerarchia di directory
- 12. Copia directory utilizzando Qt
- 13. Copia il contenuto di una directory in un'altra
- 14. Come copiare più file da una directory diversa usando cp?
- 15. cmake, add_custom_command con dipendenze da una directory diversa
- 16. Posso eseguire i test django (manage.py) da una directory diversa?
- 17. Come si esegue un programma java da una directory diversa?
- 18. Come configurare il debug remoto con una diversa directory
- 19. "Copia nella directory di output" in VC++
- 20. Copia un'intera directory con phing
- 21. Copia directory - Post Build Event
- 22. copiare tutti i file in una directory con una particolare stringa nel nome del file nella directory diversa in Bash
- 23. Copia-elemento copia directory e contenuto nel percorso UNC
- 24. Come posso compilare ed eseguire una classe Java in una directory diversa?
- 25. Creazione di directory durante una copia utilizzando IFileOperation
- 26. Gulp Copia dei file da una directory ad un'altra
- 27. Impossibile aggiungere il servizio in WcfTestClient quando si copia su una macchina diversa
- 28. Percorso in src per raggiungere un file in una directory diversa
- 29. Installazione di plugin Eclipse (3.4+) in una directory diversa da ECLIPSE_HOME/plug-in
- 30. Ant - copia solo file non directory
lol, che cosa? Scusa se non prendere in giro nessuno ha pensato che questa domanda sia esilarante nel modo in cui viene richiesta :) – VoodooChild
Capisco che la domanda abbia avuto risposta, ma dovresti provare a migliorare la qualità della domanda. Non è scritto molto bene. –
Penso che abbiamo bisogno di un nuovo motivo per chiudere - 'facile trovare se l'OP fa lo sforzo' – Gishu