Jaki jest najlepszy sposób rekurencyjnego kopiowania zawartości folderu do innego folderu przy użyciu C# i ASP.NET?Jaki jest najlepszy sposób rekurencyjnego kopiowania zawartości w języku C#?
Odpowiedz
Cóż można spróbować tego
DirectoryInfo sourcedinfo = new DirectoryInfo(@"E:\source");
DirectoryInfo destinfo = new DirectoryInfo(@"E:\destination");
copy.CopyAll(sourcedinfo, destinfo);
i jest to metoda, że nie wszystkie prace:
public void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
try
{
//check if the target directory exists
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
//copy all the files into the new directory
foreach (FileInfo fi in source.GetFiles())
{
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
//copy all the sub directories using recursion
foreach (DirectoryInfo diSourceDir in source.GetDirectories())
{
DirectoryInfo nextTargetDir = target.CreateSubdirectory(diSourceDir.Name);
CopyAll(diSourceDir, nextTargetDir);
}
//success here
}
catch (IOException ie)
{
//handle it here
}
}
Mam nadzieję, że to pomoże :)
Wystarczy użyć Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory
w Microsoft.VisualBasic.dll
montaż.
Dodaj odwołanie do Microsoft.VisualBasic
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory(source, destination);
brzmi użytecznie. jak to się stało, że klasa Directory nie ma tej metody? –
Można użyć SearchOption.AllDirectories
rekursywnie szukać w dół foldery, wystarczy stworzyć katalogi przed skopiowaniem ...
// string source, destination; - folder paths
int pathLen = source.Length + 1;
foreach (string dirPath in Directory.GetDirectories(source, "*", SearchOption.AllDirectories))
{
string subPath = dirPath.Substring(pathLen);
string newpath = Path.Combine(destination, subPath);
Directory.CreateDirectory(newpath);
}
foreach (string filePath in Directory.GetFiles(source, "*.*", SearchOption.AllDirectories))
{
string subPath = filePath.Substring(pathLen);
string newpath = Path.Combine(destination, subPath);
File.Copy(filePath, newpath);
}
genialny! jedyne usprawnienie musiałem zrobić to int pathLen = source.Length + 1 – nabeelfarid
Pozdrowienia, ulepszenia wykonane :-) – Keith
- 1. Jaki jest najlepszy sposób na zapisanie zawartości tablicy ArrayList?
- 2. Jaki jest najlepszy sposób na naukę CUDA?
- 3. Jaki jest najlepszy sposób uczenia się WCF?
- 4. Jaki jest najlepszy typ w języku Hack?
- 5. Jaki jest najlepszy sposób przetwarzania zawartości sysfs przy użyciu C/C++?
- 6. Jaki jest najlepszy sposób na interfejs C# i Java?
- 7. Jaki jest najlepszy sposób, aby aplikacja kliencka znajdowała serwer w sieci lokalnej w języku C#?
- 8. Jaki jest najlepszy sposób analizowania czasu milisekundy w C++ 11
- 9. Czy istnieje przenośny sposób kopiowania bloku pamięci w języku C#?
- 10. Jaki jest najlepszy sposób na przeniesienie obrazu za pośrednictwem usługi sieci Web w języku C#?
- 11. W języku C#, jaki jest najlepszy/akceptowany sposób wykonywania łańcuchów konstruktora?
- 12. Jaki jest najlepszy sposób wyodrębnienia jednowymiarowej tablicy z tablicy prostokątnej w języku C#?
- 13. W języku C#, jaki jest najlepszy sposób, aby przeanalizować tę wartość z ciąg znaków?
- 14. Jaki jest najlepszy sposób definiowania i dostępu do wybranych właściwości w języku C#?
- 15. Jaki jest najlepszy sposób obsługi wielu działań?
- 16. Jaki jest najlepszy sposób na wdrożenie "timera"?
- 17. Jaki jest najlepszy sposób wywołania Swift z C?
- 18. Jaki jest najlepszy sposób porównania Double i Int?
- 19. Jaki jest najlepszy/najszybszy sposób nauki GLADE z C?
- 20. Jaki jest najlepszy sposób aktualizacji formantów formularza z wątku roboczego?
- 21. Jaki jest najlepszy sposób zarządzania drzewem zależności w .NET?
- 22. Jaki jest najlepszy sposób wyświetlania HTML w Flexie?
- 23. Jaki jest najlepszy sposób przetestowania aplikacji szyny?
- 24. Jaki jest najlepszy sposób rejestrowania aktywności użytkowników?
- 25. Jaki jest najlepszy sposób na seed srand()?
- 26. Jaki jest najlepszy sposób profilowania wykonywania javascript?
- 27. Jaki jest najlepszy sposób tworzenia wdrożeń ClickOnce
- 28. Jaki jest najlepszy sposób zamknięcia gałęzi Mercurial?
- 29. Jaki jest najlepszy sposób odczytu GetResponseStream()?
- 30. Jaki jest najlepszy sposób implementacji protokołów?
Wielka kod jest jedna rzecz, którą chciałbym zmienić: // sprawdź, czy katalog docelowy istnieje , jeśli (Directory.Exists (target.FullName) == false) { Directory.CreateDirectory (targ et.FullName); } } możesz tylko znaleźć obiekt DirectoryInfo, który już masz: , jeśli (! Target.Exists) { target.Create(); } – greektreat
Dla mnie działało bez żadnych zmian. –
Kilka razy miałem 'target.Exists' nie działa poprawnie, gdzie' Directory.Exists (target.FullName) 'did ... –