文件移动 (Move) 操作和文件的复制 (Copy) 是 C# 程式开发经常遇到的方法, 根据传入的源文件地址和目标文件地址参数, 实现对文件的操作. 实现代码如下:
Move 操作代码:
- public static void MoveFolder(string sourcePath, string destPath)
- {
- if (Directory.Exists(sourcePath))
- {
- if (!Directory.Exists(destPath))
- {
- // 目标目录不存在则创建
- try
- {
- Directory.CreateDirectory(destPath);
- }
- catch (Exception ex)
- {
- throw new Exception("创建目标目录失败:" + ex.Message);
- }
- }
- // 获得源文件下所有文件
- List<string> files = new List<string>(Directory.GetFiles(sourcePath));
- files.ForEach(c =>
- {
- string destFile = Path.Combine(new string[] { destPath, Path.GetFileName(c) });
- // 覆盖模式
- if (File.Exists(destFile))
- {
- File.Delete(destFile);
- }
- File.Move(c, destFile);
- });
- // 获得源文件下所有目录文件
- List<string> folders = new List<string>(Directory.GetDirectories(sourcePath));
- folders.ForEach(c =>
- {
- string destDir = Path.Combine(new string[] { destPath, Path.GetFileName(c) });
- //Directory.Move 必须要在同一个根目录下移动才有效, 不能在不同卷中移动.
- //Directory.Move(c, destDir);
- // 采用递归的方法实现
- MoveFolder(c, destDir);
- });
- }
- else
- {
- Move
Copy 操作代码:
- public static void CopyFilefolder(string sourceFilePath, string targetFilePath)
- {
- // 获取源文件夹中的所有非目录文件
- string[] files = Directory.GetFiles(sourceFilePath);
- string fileName;
- string destFile;
- // 如果目标文件夹不存在, 则新建目标文件夹
- if (!Directory.Exists(targetFilePath))
- {
- Directory.CreateDirectory(targetFilePath);
- }
- // 将获取到的文件一个一个拷贝到目标文件夹中
- foreach (string s in files)
- {
- fileName = Path.GetFileName(s);
- destFile = Path.Combine(targetFilePath, fileName);
- File.Copy(s, destFile, true);
- }
- // 上面一段在 MSDN 上可以看到源码
- // 获取并存储源文件夹中的文件夹名
- string[] filefolders = Directory.GetFiles(sourceFilePath);
- // 创建 Directoryinfo 实例
- DirectoryInfo dirinfo = new DirectoryInfo(sourceFilePath);
- // 获取得源文件夹下的所有子文件夹名
- DirectoryInfo[] subFileFolder = dirinfo.GetDirectories();
- for (int j = 0; j < subFileFolder.Length; j++)
- {
- // 获取所有子文件夹名
- string subSourcePath = sourceFilePath + "\\" + subFileFolder[j].ToString();
- string subTargetPath = targetFilePath + "\\" + subFileFolder[j].ToString();
- // 把得到的子文件夹当成新的源文件夹, 递归调用 CopyFilefolder
- CopyFilefolder(subSourcePath, subTargetPath);
- }
- }
- Copy
来源: http://www.bubuko.com/infodetail-3364852.html