返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

c#编写一个文件目录常用操作的类代码

时间:2013-04-26 10:33来源:知行网www.zhixing123.cn 编辑:麦田守望者

今天对自己以前写的一些常用的组件整理了一下,发现对文件目录的操作的一个类还用的比较多,于是对他进行了修改,一些方法是为在社区中看到有网友提问增加的,包括复制目录的文件和子目录,移动目录文件和子目录,生成Xml树形文件等。

 

using System;

 

using System.IO;

 

using System.Xml;

 

 

 


namespace Zhzuo

 

{

 

/// <summary>

 

/// FileDirectoryUtility 类,方法不包含异常处理

 

/// </summary>

 

public class FileDirectoryUtility

 

{

 

/// <summary>

 

/// 路径分割符

 

/// </summary>

 

private const string PATH_SPLIT_CHAR = "//";

 

 

 

/// <summary>

 

/// 构造函数

 

/// </summary>

 

private FileDirectoryUtility()

 

{

 

}

 

 

 

/// <summary>

 

/// 复制指定目录的所有文件,不包含子目录及子目录中的文件

 

/// </summary>

 

/// <param name="sourceDir">原始目录</param>

 

/// <param name="targetDir">目标目录</param>

 

/// <param name="overWrite">如果为true,表示覆盖同名文件,否则不覆盖</param>

 

public static void CopyFiles(string sourceDir,string targetDir,bool overWrite)

 

{

 

CopyFiles(sourceDir,targetDir,overWrite,false);

 

}

 

 

 


/// <summary>

 

/// 复制指定目录的所有文件

 

/// </summary>

 

/// <param name="sourceDir">原始目录</param>

 

/// <param name="targetDir">目标目录</param>

 

/// <param name="overWrite">如果为true,覆盖同名文件,否则不覆盖</param>

 

/// <param name="copySubDir">如果为true,包含目录,否则不包含</param>

 

public static void CopyFiles(string sourceDir,string targetDir,bool overWrite,bool copySubDir)

 

{

 

//复制当前目录文件

 

foreach(string sourceFileName in Directory.GetFiles(sourceDir))

 

{

 

string targetFileName = Path.Combine(targetDir,sourceFileName.Substring(sourceFileName.LastIndexOf(PATH_SPLIT_CHAR)+ 1));

 

if(File.Exists(targetFileName))

 

{

 

if(overWrite == true)

 

{

 

File.SetAttributes(targetFileName,FileAttributes.Normal);

 

File.Copy(sourceFileName,targetFileName,overWrite);

 

}

 

}

 

else

 

{

 

File.Copy(sourceFileName,targetFileName,overWrite);

 

}

 

}

 

//复制子目录

 

if(copySubDir)

 

{

 

foreach(string sourceSubDir in Directory.GetDirectories(sourceDir))

 

{

 

string targetSubDir = Path.Combine(targetDir,sourceSubDir.Substring(sourceSubDir.LastIndexOf(PATH_SPLIT_CHAR) +1));

 

if(!Directory.Exists(targetSubDir))

 

Directory.CreateDirectory(targetSubDir);

 

CopyFiles(sourceSubDir,targetSubDir,overWrite,true);

 

}

 

}

 

}

 

/// <summary>

 

/// 剪切指定目录的所有文件,不包含子目录

 

/// </summary>

 

/// <param name="sourceDir">原始目录</param>

 

/// <param name="targetDir">目标目录</param>

 

/// <param name="overWrite">如果为true,覆盖同名文件,否则不覆盖</param>

 

public static void MoveFiles(string sourceDir,string targetDir,bool overWrite)

 

{

 

MoveFiles(sourceDir,targetDir,overWrite,false);

 

}

 

/// <summary>

 

/// 剪切指定目录的所有文件

 

/// </summary>

 

/// <param name="sourceDir">原始目录</param>

 

/// <param name="targetDir">目标目录</param>

 

/// <param name="overWrite">如果为true,覆盖同名文件,否则不覆盖</param>

 

/// <param name="moveSubDir">如果为true,包含目录,否则不包含</param>

 

public static void MoveFiles(string sourceDir,string targetDir,bool overWrite,bool moveSubDir)

 

{

 

//移动当前目录文件

 

foreach(string sourceFileName in Directory.GetFiles(sourceDir))

 

{

 

string targetFileName = Path.Combine(targetDir ,sourceFileName.Substring(sourceFileName.LastIndexOf(PATH_SPLIT_CHAR) + 1));

 

if(File.Exists(targetFileName))

 

{

 

if(overWrite == true)

 

{

 

File.SetAttributes(targetFileName,FileAttributes.Normal);

 

File.Delete(targetFileName);

 

File.Move(sourceFileName,targetFileName);

 

}

 

}

 

else

 

{

 

File.Move(sourceFileName,targetFileName);

 

}

 

}

 

if(moveSubDir)

 

{

 

foreach(string sourceSubDir in Directory.GetDirectories(sourceDir))

 

{

 

string targetSubDir = Path.Combine(targetDir ,sourceSubDir.Substring(sourceSubDir.LastIndexOf(PATH_SPLIT_CHAR) + 1));

 

if(!Directory.Exists(targetSubDir))

 

Directory.CreateDirectory(targetSubDir);

 

MoveFiles(sourceSubDir,targetSubDir,overWrite,true);

 

Directory.Delete(sourceSubDir);

 

}

 

}

 

}

 

 

 

/// <summary>

 

/// 删除指定目录的所有文件,不包含子目录

 

/// </summary>

 

/// <param name="targetDir">操作目录</param>

 

public static void DeleteFiles(string targetDir)

 

{

 

DeleteFiles(targetDir,false);

 

}

 

/// <summary>

 

/// 删除指定目录的所有文件和子目录

 

/// </summary>

 

/// <param name="targetDir">操作目录</param>

 

/// <param name="delSubDir">如果为true,包含对子目录的操作</param>

 

public static void DeleteFiles(string targetDir,bool delSubDir)

 

{

 

foreach(string fileName in Directory.GetFiles(targetDir))

 

{

 

File.SetAttributes(fileName,FileAttributes.Normal);

 

File.Delete(fileName);

 

}

 

if(delSubDir)

 

{

 

DirectoryInfo dir = new DirectoryInfo(targetDir);

------分隔线----------------------------
标签(Tag):C# C#实例教程 c#基础教程 C#源代码 c#技巧
------分隔线----------------------------
推荐内容
猜你感兴趣