您的位置:首页 > 编程语言 > C#

[转]C# 获取指定目录下所有文件信息、移动目录、拷贝目录

2013-09-24 10:35 691 查看
原文:http://blog.csdn.net/vchao13/article/details/6200255

1、获取指定目录下所有文件信息

/// <summary>

/// 返回指定目录下所有文件信息

/// </summary>

/// <param name="strDirectory">目录字符串</param>

/// <returns></returns>

public List<FileInfo> GetAllFilesInDirectory(string strDirectory)

{

List<FileInfo> listFiles = new List<FileInfo>(); //保存所有的文件信息

DirectoryInfo directory = new DirectoryInfo(strDirectory);

DirectoryInfo[] directoryArray = directory.GetDirectories();

FileInfo[] fileInfoArray = directory.GetFiles();

if (fileInfoArray.Length > 0) listFiles.AddRange(fileInfoArray);

foreach (DirectoryInfo _directoryInfo in directoryArray)

{

DirectoryInfo directoryA = new DirectoryInfo(_directoryInfo.FullName);

DirectoryInfo[] directoryArrayA = directoryA.GetDirectories();

FileInfo[] fileInfoArrayA = directoryA.GetFiles();

if (fileInfoArrayA.Length > 0) listFiles.AddRange(fileInfoArrayA);

GetAllFilesInDirectory(_directoryInfo.FullName);//递归遍历

}

return listFiles;

}

2、移动此目录到指定目录

/// <summary>

/// 从一个目录将其内容移动到另一目录

/// </summary>

/// <param name="directorySource">源目录</param>

/// <param name="directoryTarget">目的目录</param>

private void MoveFolderTo(string directorySource, string directoryTarget)

{

//检查是否存在目的目录

if (!Directory.Exists(directoryTarget))

{

Directory.CreateDirectory(directoryTarget);

}

//先来移动文件

DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);

FileInfo[] files = directoryInfo.GetFiles();

//移动所有文件

foreach (FileInfo file in files)

{

//如果自身文件在运行,不能直接覆盖,需要重命名之后再移动

if (File.Exists(Path.Combine(directoryTarget, file.Name)))

{

if (File.Exists(Path.Combine(directoryTarget, file.Name + ".bak")))

{

File.Delete(Path.Combine(directoryTarget, file.Name + ".bak"));

}

File.Move(Path.Combine(directoryTarget, file.Name), Path.Combine(directoryTarget, file.Name + ".bak"));

}

file.MoveTo(Path.Combine(directoryTarget, file.Name));

}

//最后移动目录

DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();

foreach (DirectoryInfo dir in directoryInfoArray)

{

MoveFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));

}

}

3、拷贝此目录到指定目录

/// <summary>

/// 从一个目录将其内容复制到另一目录

/// </summary>

/// <param name="directorySource">源目录</param>

/// <param name="directoryTarget">目的目录</param>

static void CopyFolderTo(string directorySource, string directoryTarget)

{

//检查是否存在目的目录

if (!Directory.Exists(directoryTarget))

{

Directory.CreateDirectory(directoryTarget);

}

//先来复制文件

DirectoryInfo directoryInfo = new DirectoryInfo(directorySource);

FileInfo[] files = directoryInfo.GetFiles();

//复制所有文件

foreach (FileInfo file in files)

{  

file.CopyTo (Path.Combine(directoryTarget, file.Name));

}

//最后复制目录

DirectoryInfo[] directoryInfoArray = directoryInfo.GetDirectories();

foreach (DirectoryInfo dir in directoryInfoArray)

{

CopyFolderTo(Path.Combine(directorySource, dir.Name), Path.Combine(directoryTarget, dir.Name));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: