我有一个autoupdater C#程序。它会下载一个rar文件,该文件将更新后的文件或新文件保存到一些软件中。 rar文件的结构就像软件的基本目录一样,但只包含已更改或新的文件/文件夹。有没有简单的方法来“合并”这些文件/文件夹到目的地目录,因为如果文件/文件夹已经存在,它会被替换,如果不是,它会被添加或我必须手动遍历每个文件/文件夹,并自己做这个?只是希望有是.NET具有:)C#将一个目录与另一个目录合并
5
A
回答
19
下面的例子演示了如何复制目录及其内容一个不错的合并功能。
public static void CopyAll(DirectoryInfo source, DirectoryInfo target) { if (source.FullName.ToLower() == target.FullName.ToLower()) { return; } // 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); } }
1
最简单的方法是使用FileSystem.MoveDirectory方法。请确保你添加了对Microsoft.VisualBasic.dll
的引用:
using Microsoft.VisualBasic.FileIO;
...
// Merge D:\SourceDir with D:\DestDir:
FileSystem.MoveDirectory("D:\\SourceDir", "D:\\DestDir", true /* Overwrite */);
+0
问题是合并源目录和目标目录,MoveDirectory会在这种情况下工作吗?我相信MoveDirectory倾向于在目标上创建一个新目录,并且如果目录已经存在,将会引发一个错误“如果该文件已经存在,就不能创建文件”。 – kaushalparik27 2017-03-31 14:22:44
+1
为什么相信你可以试试?它会合并这些目录,所以你最终会得到一个单一的DestDir,其中包含所有内容。 – Yarik 2017-03-31 14:35:22
相关问题
- 1. 将文件从一个目录复制到另一个目录
- 2. ASP.NET Web Dev:将一个目录映射到另一个目录?
- 3. 将文件从一个目录复制到另一个目录
- 4. 将文件从一个目录移动到另一个目录
- 5. 将一个目录的内容复制到另一个目录
- 6. 将文件从一个目录移动到另一个目录
- 7. 将文件从一个目录复制到另一个目录
- 8. 将文件从一个目录移动到另一个目录
- 9. 将一个目录重定向到另一个目录
- 10. 将文件从一个目录复制到另一个目录
- 11. 将文件从一个目录复制到另一个目录
- 12. tar文件在一个目录中,并将档案放在另一个目录
- 13. 将文件夹从一个目录移动到另一个目录。在c#
- 14. Ant目标将目录移出另一个目录
- 15. 从一个目录的文件复制到另一个目录
- 16. 在Java中的另一个目录中搜索一个目录
- 17. 如何将一个目录中的大量文件从一个目录移动到另一个目录?
- 18. 将单个图像从一个目录重定向到另一个目录
- 19. 目录中的另一个
- 20. 在另一个目录树
- 21. 在另一个目录
- 22. 的startApp与manage.py到另一个目录
- 23. 与构建从另一个目录
- 24. 在颠覆与另一个目录拷贝更换目录
- 25. git和合并。签出一个目录从一个分支到另一个
- 26. bash脚本从一个目录中获取文件并将它们与另一个目录进行比较
- 27. 批处理命令将目录移动到另一个目录
- 28. VB.NET将本地目录内容复制到另一个目录
- 29. 将文件从一个目录复制/粘贴到另一个目录
- 30. 如何使用.htaccess将一个目录重定向到另一个目录?
想知道为什么你的帖子没有显示给我,当我自己写一个? – 2012-01-29 13:52:56
@FelixK。我发布了一个答案,然后我认为这不是正确的,删除了它,在删除和删除时进行了编辑。坦率地说,这是一种常见的做法。 – GSerg 2012-01-29 13:54:57
嘿,谢谢你队友 – 2013-05-14 14:08:19