Làm thế nào tôi có thể sao chép tất cả nội dung trong một thư mục này sang thư mục khác với vòng lặp lặp lại trên mỗi tệp?Sao chép tất cả các tập tin trong thư mục
Trả lời
Bạn không thể. Nhưng bạn có thể sử dụng một số loại mã ngắn gọn như Directory.GetFiles(mydir).ToList().ForEach(f => File.Copy(f, otherdir + "\\" f);
Điều này không hoạt động đệ quy. –
Bạn không thể. Không phải là Directory
cũng không phải DirectoryInfo
cung cấp phương thức Copy
. Bạn cần phải thực hiện điều này cho mình.
void Copy(string sourceDir, string targetDir)
{
Directory.CreateDirectory(targetDir);
foreach(var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
foreach(var directory in Directory.GetDirectories(sourceDir))
Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
}
Vui lòng đọc nhận xét để biết một số vấn đề với phương pháp đơn giản này.
Điều này chỉ sao chép tệp, nó không tạo bất kỳ thư mục con nào. Vì vậy, nếu đích đến chưa có cấu trúc thư mục giống nhau, bạn sẽ cần phải thêm một dòng ở đầu để tạo đích nếu nó chưa tồn tại. – Ross
@Ross: Thật vậy, đã sửa. Xin lưu ý rằng điều này không sao chép các thuộc tính bảo mật như quyền truy cập. –
bằng cách kiểm tra xem tệp và thư mục có tồn tại hay không. if (! Directory.Exists (targetDir)) ... if (! File.Exists (file)) – Misi
MSDN có hướng dẫn về vấn đề này - How to:Copy Directories
Execute xcopy source_directory\*.* destination_directory
như một lệnh bên ngoài. Tất nhiên điều này sẽ chỉ hoạt động trên các máy Windows.
Bạn không nên sử dụng các cuộc gọi hệ thống nếu không cần thiết. Ở đây, nó chắc chắn là không cần thiết. –
Điều cần thiết là câu hỏi nêu rõ ** với vòng lặp lặp lại mỗi tệp **. – m0skit0
Và bạn nghĩ gì về xcopy? Anh ta không muốn lặp lại, bởi vì anh ta nghĩ có một cách dễ dàng hơn. Không có. Và một cuộc gọi hệ thống không phải là dễ dàng hơn cũng không phải là một cách tốt nói chung. Nó được khuyến khích mạnh mẽ! –
Bạn có thể sử dụng phương pháp FileSystem.CopyDirectory VB để đơn giản hóa các nhiệm vụ:
using Microsoft.VisualBasic.FileIO;
foo(){
FileSystem.CopyDirectory(directoryPath, tempPath);
}
Tôi nhớ VB. Và mọi người nói bạn có thể làm tất cả những điều tương tự trong C#. –
Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + @"resources\html")
.ToList()
.ForEach(f => File.Copy(f, folder + "\\" + f.Substring(f.LastIndexOf("\\"))));
using System.IO;
string sourcePath = @"D:\test";
string targetPath = @"D:\test_new";
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
foreach (var srcPath in Directory.GetFiles(sourcePath))
{
//Copy the file from sourcepath and place into mentioned target path,
//Overwrite the file if same file is exist in target path
File.Copy(srcPath, srcPath.Replace(sourcePath, targetPath), true);
}
này hoạt động tuyệt vời! Nó sẽ sao chép các thư mục con hoặc bạn chỉ có thể đổ tất cả các tệp từ tất cả các thư mục con vào một vị trí.
/// AUTHOR : Norm Petroff
/// <summary>
/// Takes the files from the PathFrom and copies them to the PathTo.
/// </summary>
/// <param name="pathFrom"></param>
/// <param name="pathTo"></param>
/// <param name="filesOnly">Copies all files from each directory to the "PathTo" and removes directory.</param>
static void CopyFiles(String pathFrom, String pathTo, Boolean filesOnly)
{
foreach(String file in Directory.GetFiles(pathFrom))
{
// Copy the current file to the new path.
File.Copy(file, Path.Combine(pathTo, Path.GetFileName(file)), true);
// Get all the directories in the current path.
foreach (String directory in Directory.GetDirectories(pathFrom))
{
// If files only is true then recursively get all the files. They will be all put in the original "PathTo" location
// without the directories they were in.
if (filesOnly)
{
// Get the files from the current directory in the loop.
CopyFiles(directory, pathTo, filesOnly);
}
else
{
// Create a new path for the current directory in the new location.
var newDirectory = Path.Combine(pathTo, new DirectoryInfo(directory).Name);
// Copy the directory over to the new path location if it does not already exist.
if (!Directory.Exists(newDirectory))
{
Directory.CreateDirectory(newDirectory);
}
// Call this routine again with the new path.
CopyFiles(directory, newDirectory, filesOnly);
}
}
}
}
- 1. Xóa tất cả các tập tin trong một thư mục
- 2. Ant - chỉ sao chép tập tin không phải thư mục
- 3. Sao chép tập tin vào thư mục tài sản
- 4. Tìm tất cả các tập tin trong thư mục không phải là thư mục tự
- 5. Sao chép tập tin vào một thư mục mới
- 6. Sao chép tất cả các file trong một thư mục với một chuỗi đặc biệt trong tên tập tin vào thư mục khác nhau trong Bash
- 7. danh sách sao chép các tập tin từ một thư mục khác trong R
- 8. Scala - Iterator trên tất cả các dòng trong các tập tin trong một thư mục
- 9. Sao chép các tập tin trong khi bỏ qua các tập tin tồn tại - Unix
- 10. Lấy danh sách tất cả các tập tin bên trong một thư mục trong vb.net
- 11. bỏ qua tập tin nhất định trong tất cả các thư mục sử dụng một tập tin duy nhất .gitignore
- 12. Bash: scp tất cả các tệp trong một thư mục, nhưng không phải thư mục con
- 13. iPhone SDK Xcode - Cách lấy tất cả các tên tập tin trong thư mục tài liệu
- 14. Làm thế nào để tải tất cả các tập tin trong một thư mục với XNA?
- 15. Xóa tất cả các tập tin trong một thư mục bằng Python
- 16. Shellscript Looping Thông qua tất cả các tập tin trong một thư mục
- 17. GitHub API: Fetch tất cả các thư mục và tập tin trong đơn GET Yêu cầu
- 18. gmake biên dịch tất cả các tập tin trong một thư mục
- 19. Tập tin bó Windows - Kết hợp tất cả các tệp trong thư mục con
- 20. Cách tạo một hàm đệ quy để sao chép tất cả các tệp và thư mục
- 21. Mục tiêu MSBuild _CopyWebApplication không sao chép tất cả các tệp cần thiết vào thư mục bin
- 22. Liệt kê tất cả các thư mục trong thư mục
- 23. Ngăn các tập tin "siêu" được sao chép vào thư mục Release của tôi
- 24. Sao chép các tập tin từ PC sang Thư mục Tài liệu Ứng dụng iPad
- 25. grep trong tất cả các thư mục
- 26. Diff Một thư mục đệ quy, bỏ qua tất cả các tập tin nhị phân:
- 27. ngăn chặn Team Build thả tất cả các tập tin nhị phân vào thư mục gốc của thư mục thả
- 28. cách lấy tất cả các tập tin trong một thư mục trong ipad sử dụng mục tiêu c
- 29. Sao chép tập tin với cấu trúc chính xác vào một thư mục sử dụng Xcopy
- 30. Nén tất cả mọi thứ trong thư mục với 7z trừ một tập tin hoặc một loại tập tin
Xem tại đây: http://stackoverflow.com/questions/206323/how-to-execute-command-line-in-c-get-std-out-results và đặt ở đó cho lệnh "sao chép \ *. * YOURDIR " – fritzone