c#中实现递归文件拷贝(代码)
2012-12-25 18:34
555 查看
//**************************************************************************// /* //获得长路径的相对短路径名称 [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern uint GetShortPathName(string lpszLongPath, StringBuilder lpszShortPath, int cchBuffer); //实现文件拷贝,递归逐文件拷贝 private void DirectoryCopy(string sourceDir, string targetDir) { if (!Directory.Exists(sourceDir)) { DialogResult OKButtonDown = MessageBox.Show("需要备份的路径不存在,请查看!", "备份失败", MessageBoxButtons.OK, MessageBoxIcon.Warning); if (DialogResult.OK == OKButtonDown) { Application.Exit(); } } string sourceFolderName = sourceDir.Replace(Directory.GetParent(sourceDir).ToString(), "").Replace(Path.DirectorySeparatorChar.ToString(), ""); if (sourceDir == targetDir + sourceFolderName) { DialogResult OKButtonDown = MessageBox.Show("备份的目标路径和原路径相同,不需要备份!", "备份失败", MessageBoxButtons.OK, MessageBoxIcon.Warning); if (DialogResult.OK == OKButtonDown) { Application.Exit(); } } //得到要复制到的路径 string tagetPath = targetDir + Path.DirectorySeparatorChar.ToString() + sourceFolderName; //检查目标路径 if (Directory.Exists(tagetPath)) { DialogResult OKButtonDown = MessageBox.Show("备份的目标路径已经存在,点击是将删除目标并备份,点击否将覆盖并备份", "请查看", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); if (DialogResult.Yes == OKButtonDown) { Directory.Delete(tagetPath, true); //return; } else if (DialogResult.No == OKButtonDown) { //复制文件 string[] files1 = Directory.GetFiles(sourceDir); for (int i = 0; i < files1.Length; i++) { File.Copy(files1[i], tagetPath + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files1[i]), true); } //复制目录 string[] dires1 = Directory.GetDirectories(sourceDir); for (int j = 0; j < dires1.Length; j++) { DirectoryCopy(dires1[j], tagetPath); } return; } else if (DialogResult.Cancel == OKButtonDown) { Application.Exit(); } } StringBuilder _shortPath1 = new StringBuilder(255); uint result1 = GetShortPathName(tagetPath, _shortPath1, 255); string MyShortPath1 = _shortPath1.ToString(); if (0 == result1) { Directory.CreateDirectory(tagetPath); } else { Directory.CreateDirectory(MyShortPath1); } //复制文件 string[] files3 = Directory.GetFiles(sourceDir); for (int i = 0; i < files3.Length; i++) { //string longPath = tagetPath + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files3[i]); //StringBuilder _shortPath = new StringBuilder(255); //uint result = GetShortPathName(longPath, _shortPath, 255); //string MyShortPath = _shortPath.ToString(); File.Copy(files3[i],/*MyShortPath/tagetPath + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files3[i]), true); } //复制目录 string[] dires3 = Directory.GetDirectories(sourceDir); for (int j = 0; j < dires3.Length; j++) { string longPath = dires3[j]; StringBuilder _shortPath = new StringBuilder(255); uint result = GetShortPathName(longPath, _shortPath, 255); string MyShortPath = _shortPath.ToString(); DirectoryCopy(MyShortPath, tagetPath); } } */
/// <summary> /// 更新新版本文件 /// </summary> /* private void NewFileCover(string NewDir , string OlDir) { if (!Directory.Exists(NewDir)) { DialogResult OKButtonDown = MessageBox.Show("需要备份的路径不存在,请查看!", "备份失败", MessageBoxButtons.OK, MessageBoxIcon.Warning); if (DialogResult.OK == OKButtonDown) { Application.Exit(); } } //Directory.CreateDirectory(OlDir); //复制文件 string[] files3 = Directory.GetFiles(NewDir); for (int i = 0; i < files3.Length; i++) { File.Copy(files3[i], OlDir + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(files3[i]), true); } //复制目录 string[] dires3 = Directory.GetDirectories(NewDir); for (int j = 0; j < dires3.Length; j++) { string longPath = dires3[j]; StringBuilder _shortPath = new StringBuilder(255); uint result = GetShortPathName(longPath, _shortPath, 255); string MyShortPath = _shortPath.ToString(); // DirectoryCopy(dires3[j], OlDir); NewFileCover(MyShortPath, OlDir); } } */
相关文章推荐
- python 实现文件的递归拷贝实现代码
- python 实现文件的递归拷贝实现代码
- C#文件写入,C#追加文件,C#拷贝文件,C#删除文件 ,C#移动文件 ,C#递归删除文件夹及文件
- Linux下实现文件拷贝(代码保留)
- C#读取文件MD5值的实现代码
- C#不使用ReportViewer直接打印Report文件(rdlc)的实现代码
- Android手机SD卡文件或目录拷贝、复制、粘贴功能实现代码
- c#实现复制全部文件夹及文件的代码
- python 实现文件的递归拷贝
- 用python代码实现文件的拷贝
- C#读取TXT文件的代码实现
- C#解析json文件的实现代码
- C# 将txt文件的数据库元组导入数据库,代码实现
- C#读取TXT文件的代码实现
- MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除
- C#实现将记事本中的代码编译成可执行文件的方法
- C#如何不使用递归实现无限层次结构的代码分享[转]
- ASP.NET(C#)实现一次性动态上传多张图片的代码(多个文件)