编写一个文件目录常用操作的类

** 编写一个文件目录常用操作的类 **

郑佐 2005-3-8

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

using System;

using System.IO;

using System.Xml;

namespace Zhzuo

{

///

1<summary>
2
3///  FileDirectoryUtility  类  ,  方法不包含异常处理 
4
5///  </summary>

public class FileDirectoryUtility

{

///

1<summary>
2
3///  路径分割符 
4
5///  </summary>

private const string PATH_SPLIT_CHAR = "\";

///

1<summary>
2
3///  构造函数 
4
5///  </summary>

private FileDirectoryUtility()

{

}

///

1<summary>
2
3///  复制指定目录的所有文件  ,  不包含子目录及子目录中的文件 
4
5///  </summary>

///

1<param name="sourceDir"/>

原始目录

///

1<param name="targetDir"/>

目标目录

///

1<param name="overWrite"/>

如果为 true, 表示覆盖同名文件 , 否则不覆盖

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

{

CopyFiles(sourceDir,targetDir,overWrite, false );

}

///

1<summary>
2
3///  复制指定目录的所有文件 
4
5///  </summary>

///

1<param name="sourceDir"/>

原始目录

///

1<param name="targetDir"/>

目标目录

///

1<param name="overWrite"/>

如果为 true, 覆盖同名文件 , 否则不覆盖

///

1<param name="copySubDir"/>

如果为 true, 包含目录 , 否则不包含

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 );

}

}

}

///

1<summary>
2
3///  剪切指定目录的所有文件  ,  不包含子目录 
4
5///  </summary>

///

1<param name="sourceDir"/>

原始目录

///

1<param name="targetDir"/>

目标目录

///

1<param name="overWrite"/>

如果为 true, 覆盖同名文件 , 否则不覆盖

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

{

MoveFiles(sourceDir,targetDir,overWrite, false );

}

///

1<summary>
2
3///  剪切指定目录的所有文件 
4
5///  </summary>

///

1<param name="sourceDir"/>

原始目录

///

1<param name="targetDir"/>

目标目录

///

1<param name="overWrite"/>

如果为 true, 覆盖同名文件 , 否则不覆盖

///

1<param name="moveSubDir"/>

如果为 true, 包含目录 , 否则不包含

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);

}

}

}

///

1<summary>
2
3&lt;p class="MsoNorm</summary>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus