知识大全 编写一个文件目录常用操作的类

Posted 目录

篇首语:一身转战三千里,一剑曾当百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 编写一个文件目录常用操作的类相关的知识,希望对你有一定的参考价值。

  今天对自己以前写的一些常用的组件整理了一下 发现对文件目录的操作的一个类还用的比较多 于是对他进行了修改 一些方法是为在社区中看到有网友提问增加的 包括复制目录的文件和子目录 移动目录文件和子目录 生成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)+ ));

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

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

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

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

  foreach(DirectoryInfo subDi in  dir GetDirectories())

  

  DeleteFiles(subDi FullName true);

  subDi Delete();

  

  

  

  /// <summary>

  /// 创建指定目录

  /// </summary>

  /// <param name= targetDir ></param>

  public static void CreateDirectory(string targetDir)

                         DirectoryInfo dir= new DirectoryInfo(targetDir);

  if (!dir Exists)

  dir Create();

  

  /// <summary>

  /// 建立子目录

  /// </summary>

  /// <param name= targetDir >目录路径</param>

  /// <param name= subDirName >子目录名称</param>

  public static void CreateDirectory(string parentDir string subDirName)

  

  CreateDirectory(parentDir + PATH_SPLIT_CHAR + subDirName);

  

  /// <summary>

  /// 删除指定目录

  /// </summary>

  /// <param name= targetDir >目录路径</param>

  public static void DeleteDirectory(string targetDir)

  

  DirectoryInfo dirInfo = new DirectoryInfo(targetDir);

  if(dirInfo Exists)

                     DeleteFiles(targetDir true);

  dirInfo Delete(true);

  

  

  /// <summary>

  /// 删除指定目录的所有子目录 不包括对当前目录文件的删除

  /// </summary>

  /// <param name= targetDir >目录路径</param>

  public static void DeleteSubDirectory(string targetDir)

  

  foreach(string subDir in Directory GetDirectories(targetDir))

  

  DeleteDirectory(subDir);

  

  

  /// <summary>

  /// 将指定目录下的子目录和文件生成xml文档

  /// </summary>                  /// <param name= targetDir >根目录</param>

  /// <returns>返回XmlDocument对象</returns>

  public static XmlDocument CreateXml(string targetDir)

  

  XmlDocument myDocument = new XmlDocument();

  XmlDeclaration declaration = myDocument CreateXmlDeclaration( utf null);

  myDocument AppendChild(declaration);

  XmlElement rootElement = myDocument CreateElement(targetDir Substring(targetDir LastIndexOf(PATH_SPLIT_CHAR) + ));

  myDocument AppendChild(rootElement);

  foreach(string fileName in Directory GetFiles(targetDir))

  

  XmlElement childElement = myDocument CreateElement( File );

  childElement InnerText = fileName Substring(fileName LastIndexOf(PATH_SPLIT_CHAR) + );

  rootElement AppendChild(childElement);

  

  foreach(string directory in  Directory GetDirectories(targetDir))

  

  XmlElement childElement = myDocument CreateElement( Directory );

  childElement SetAttribute( Name directory Substring(directory LastIndexOf(PATH_SPLIT_CHAR) + ));

  rootElement AppendChild(childElement);

  CreateBranch(directory childElement myDocument);

  

  return myDocument;

  

  /// <summary>

  /// 生成Xml分支

  /// </summary>

  /// <param name= targetDir >子目录</param>

  /// <param name= xmlNode >父目录XmlDocument</param>

  /// <param name= myDocument >XmlDocument对象</param>

  private static void CreateBranch(string targetDir XmlElement xmlNode XmlDocument myDocument)

  

  foreach(string fileName in Directory GetFiles(targetDir))

  

  XmlElement childElement = myDocument CreateElement( File );

  childElement InnerText = fileName Substring(fileName LastIndexOf(PATH_SPLIT_CHAR)+ );

  xmlNode AppendChild(childElement);

  

  foreach(string directory in  Directory GetDirectories(targetDir))

  

  XmlElement childElement = myDocument CreateElement( Directory );

  childElement SetAttribute( Name directory Substring(directory LastIndexOf(PATH_SPLIT_CHAR) + ));

  xmlNode AppendChild(childElement);

  CreateBranch(directory childElement myDocument);

  

  

  

  

cha138/Article/program/net/201311/11976

相关参考

知识大全 解析web文件操作常见安全漏洞(目录、文件名检测漏洞

  做web开发我们经常会做代码走查很多时候我们都会抽查一些核心功能或者常会出现漏洞的逻辑随着技术团队的壮大组员技术日益成熟常见傻瓜型SQL注入漏洞以及XSS漏洞会越来越少但是我们也会发现一些新兴的隐

知识大全 java常用的ant的操作方法

  我常用的ant的操作方便自己查询所以传到网上如果有朋友觉得不够请补充  主要的内容有  ()建立一个项目  ()建立属性  ()对数据库的操作  ()javac编译  ()删除目录  ()建立目录

知识大全 Linux下PHP删除一个目录下所有文件夹和子目录

Linux下PHP删除一个目录下所有文件夹和子目录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 基于php常用函数总结(数组,字符串,时间,文件操作)

  数组:【重点】implode(分隔arr)把数组值数据按指定字符连接起来例如$arr=array();$str=implode($arr);explode([分隔]arr)按指定规则对一个字符串进

知识大全 通过幸存oracle文件修复oracle9i数据

  问我没有备分oralce也没有导出数据库现在操作系统崩溃了但是oracle目录下的文件很完整请问如何修复我的表?  答:建一个相同的数据库(磁盘目录相同否则要改init文件麻烦)把数据文件控制文件

知识大全 一个判定文件是否为文本文件的函数

  在用Delphi编程处理文本文件的时候如果要装载的文件比较大你可能会想在文件装载过程中提供一个装载进度的提示那么你就必须自己编写直接通过文件打开/读取函数来装载文件内容的函数  在自己编写文本文件

知识大全 oraclerman命令

  从网络上找到rman命令集合  一list常用命令总结备忘  list命令列出控制文件RMAN恢复目录中备份信息是我们对所有可见的数据库备份文件的一个最直观的了解的方法  listincarnat

知识大全 如何使用php实现封装数据库的类文件

  <?phpcha138/Article/program/PHP/201311/21115

WindowS中,关于文件复制和移动的操作,说法正确的是

WindowS中,关于文件复制和移动的操作,说法正确的是_____。A、不同磁盘间不能用鼠标拖动的方法实现文件的移动B、不同磁盘间可以用鼠标拖动的方法实现文件的复制C、在同一磁盘上,不同目录间可用鼠标

知识大全 classpath的理解

  jvm的类加载分三中方式  系统级别rtjar  扩展级别java_home/jre/lib/ext/目录下的jar文件  应用级别环境变量中的classpath或javac