文件和文件夹操作

一、文件操作

1、File类的常用静态方法:

  • void AppendAllText(string path, string contents),将文本contents附加到文件path中
  • bool Exists(string path)判断文件path是否存在
  • string[] ReadAllLines(string path) 读取文本文件到字符串数组中
  • string ReadAllText(string path) 读取文本文件到字符串中
  • void WriteAllText(string path, string contents)将文本contents保存到文件path中,会覆盖旧内容。
  • WriteAllLines(string path,string[] contents),将字符串数组逐行保存到文件path中,会覆盖旧内容。
  • Copy(参数)方法:复制文件
  • Exists(string path):确定指定文件是否存在
  • Delete(string path):删除指定的文件,如果指定的文件不存在,则不引发异常
  • GetAttributes(string path):获取在此路径上的文件属性
  • File.SetAttributes(string path,FileAttributes fileAttributes):设置指定路径上的文件属性
  • GetCreationTime(string path):返回指定文件或目录的创建日期和时间

FileInfo类和File类的功能类似,不同的是使用FileInfo类必须实例化对象;如需调用一系列方法,FileInfo类效率更高、更简单(由于File类的静态方法在使用时都会进行安全检查)

二、目录操作
1、Directory类的常用静态方法:(目录就是文件夹)

  • void Delete(string path, bool recursive):删除目录, recursive表示是否递归删除,如果recursive为false则只能删除空目录
  • bool Exists(string path) :判断目录是否存在
  • Move(string sourceDirName,string destDirName):移动
  • CreateDirectory(string path):创建文件夹
  • string[] GetDirectories(string path):得到一个目录下的子目录
  • string[] GetDirectories(string path, string searchPattern, SearchOption searchOption):通配符查找目录下的子目录
  • static string[] GetFiles(string path):得到指定目录下的文件名称数组
  • string[] GetFiles(string path, string searchPattern, SearchOption searchOption):通配符查找目录下的文件
  • DirectoryInfo GetParent(string path):得到目录的父目录
  • GetDirectories():获取当前目录的子目录的名称数组
  • GetCurrentDirectory():获取应用程序的当前目录
  • GetDorectoryRoot(string path):获取根目录

DirectoryInfo类

    • DirectoryInfo[] GetDirectories():获取当前目录的子目录的对象数组
    • FileInfo[] GetFiles():得到当前目录下文件列表(FileInfo对象数组)
    • FileSystemInfo[] GetFileSystemInfos():返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。
    • 2、判断该路径是文件还是文件夹

      string path = "D:\\test.txt";
      // 方式一
      if (File.GetAttributes(path).CompareTo(FileAttributes.Directory) == 0)
      {
          Console.WriteLine("文件夹");
      }
      else
      {
          Console.WriteLine("文件");
      }
      // 方式二
      if (File.Exists(path))
      {
          Console.WriteLine("文件");
      }
      else if (Directory.Exists(path))
      {
          Console.WriteLine("文件夹");
      }

      3、创建目录、复制目录和删除目录

              /// <summary>
              /// 创建目录,可以直接Directory.CreateDirctory(string dirPath),或使用以下方法
              /// </summary>
              /// <param name="path"></param>
              public static void CreateDirtory(string path)
              {
                  if (!File.Exists(path))
                  {
                      string[] dirArray = path.Split(‘\\‘);
                      string temp = string.Empty;
                      for (int i = 0; i < dirArray.Length - 1; i++)
                      {
                          temp += dirArray[i].Trim() + "\\";
                          if (!Directory.Exists(temp))
                              Directory.CreateDirectory(temp);
                      }
                  }
              }
      
              /// <summary>
              /// 文件夹的复制
              /// </summary>
              /// <param sourceDir="string">要复制的原路径</param>
              /// <param targetDir="string">要复制的目的路径</param>
              /// <param name="overwrite">若为true,则允许覆盖现有文件;否则为false</param>
              /// <param name="copySubDir">是否复制子目录</param>
              public static void DirectoryCopy(string sourceDirPath, string targetDirPath, bool overwrite, bool copySubDir)
              {       // 如果目录路径不是以路径符“\”结尾,则在目录路径后加上路径符“\”            if (sourceDirPath[sourceDirPath.Length - 1] != Path.DirectorySeparatorChar)               sourceDirPath += Path.DirectorySeparatorChar;
                  DirectoryInfo sourceDirInfo = new DirectoryInfo(sourceDirPath);
                  try
                  {
                      if (!sourceDirInfo.Exists)//判断所指的文件或文件夹是否存在
                      {
                          return;
                      }
                      if (!Directory.Exists(targetDirPath))
                      {
                          Directory.CreateDirectory(targetDirPath);
                      }
                      // 获取文件夹中所有文件和文件夹
                      FileSystemInfo[] sourceFiles = sourceDirInfo.GetFileSystemInfos();
                      // 对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
                      foreach (FileSystemInfo sourceFileSys in sourceFiles)
                      {
                          FileInfo file = sourceFileSys as FileInfo;
                          if (file != null)   // 如果是文件的话,进行文件的复制操作
                          {
                              string targetFilePath = Path.Combine(targetDirPath, file.Name);
                              if (File.Exists(targetFilePath) && overwrite)
                              {
                                  File.SetAttributes(targetFilePath, FileAttributes.Normal);
                              }
                              file.CopyTo(targetFilePath, overwrite);                  // 将文件复制到指定的路径中
                          }
                          else
                          {
                              if (copySubDir)
                              {
                                  DirectoryCopy(sourceFileSys.FullName, Path.Combine(targetDirPath, sourceFileSys.Name), overwrite, copySubDir);
                              }
                          }
                      }
                  }
                  catch (Exception ex)
                  {
                      throw ex;
                  }
              }
      
              /// <summary>
              /// 删除指定的目录
              /// </summary>
              /// <param name="dirPath">目录路径</param>
              /// <param name="isDelSelf">是否删除本身:true为删除指定目录,false为删除指定目录下的所有目录、子目录和文件</param>
              public static void DeleteDirectory(string dirPath, bool isDelSelf)
              {
                  if (Directory.Exists(dirPath))
                  {
                      if (isDelSelf)
                      {
                          Directory.Delete(dirPath, true);
                      }
                      else
                      {
                          foreach (string content in Directory.GetFileSystemEntries(dirPath))
                          {
                              if (Directory.Exists(content))
                                  Directory.Delete(content, true);
                              else if (File.Exists(content))
                                  File.Delete(content);
                          }
                      }
                  }
              }

      三、文件路径

      Path类常用静态方法:

      • string ChangeExtension(string path, string extension) :

        •   修改文件的后缀,“修改”支持字符串层面的,没有真的给文件改名,如: string s = Path.ChangeExtension(@"C:\temp\F3.png", "jpg")
      • string Combine(string path1, string path2):将两个路径合成一个路径,比用+好,可以方便解决是不是加斜线的问题,自动处理路径分隔符的问题
        •   string s = Path.Combine(@"c:\temp","a.jpg")
      • string GetDirectoryName(string path) :得到文件的路径名。Path.GetDirectoryName(@"c:\temp\a.jpg")
      • string GetExtension(string path) 得到文件的扩展名
      • string GetFileName(string path) 得到文件路径的文件名部分
      • string GetFileNameWithoutExtension(string path) 得到去除扩展名的文件名
      • string GetFullPath(string path) 得到文件的全路径。”.\”当前路径,”..\”上一级路径,”..\..\”上一级的上一级
      • string GetTempFileName()  得到一个唯一的临时文件名
      • string GetTempPath() 得到临时文件夹的路径

      得到当前exe的路径。Assembly.GetExecutingAssembly().Location得到exe的全路径,Path.GetDirectoryName得到目录路径,不要用Directory.GetCurrentDirectory(),这个可能会变(使用OpenFileDialog或者SetCurrentDirectory())。
      AppDomain.CurrentDomain.BaseDirectory;  // 获取当前程序的目录
      Application.StartupPath // 获取当前程序的目录
      System.Environment.CurrentDirectory // 获取当前程序的目录,与Directory.GetCurrentDirectory()一样可能会变(使用OpenFileDialog或者SetCurrentDirectory())。参考:http://www.cnblogs.com/mayswind/archive/2013/06/12/3119570.html

时间: 2024-10-13 12:50:23

文件和文件夹操作的相关文章

Linux命令行基本文件/文件夹操作

对文件的操作 创建空文件:   touch +文件名   # 一般是先touch好一个文件然后vim这个文件. 很好奇为什么叫touch.删除文件:  rm +文件名         # 直接就没了,不会到回收站 复制文件到指定位置: cp +文件 + 目标目录  # 例如 cp file sub 把当前目录下的file文件复制到了当前目录子目录sub里面.重命名/移动文件: mv +文件(文件夹) + 目标目录 # 例如 mv dir1 dir2/new 把文件夹dir1(及其内容)移动到了跟

用python操作文件和文件夹

我有一堆层级3到4级的文件夹,这里面存有的一些文件是我需要的,一些是我不需要的.需要的文件都存储在名字中有'Data'的文件夹内.现在我需要把这些文件提取(拷贝)到一个指定的文件夹里. 一个文件夹一个文件夹去点开是一种方法,但是对于层级比较深的文件夹是一件很枯燥的事情. 本着一切尽量自动化的原则,我用python来做这件事情. 这个需求归纳下来需要: 从一个起始目录开始 遍历每一个文件夹 如果文件夹的名字中有'Data',拷贝它的内容至目标文件夹 python对文件.文件夹的操作是非常常见的需求

linux —— 学习笔记(文件、文件夹操作)

目录:1.常用的文件文件夹操作 2.文件属性的设置 1.常用的文件文件夹操作 mkdir  创建文件夹 -p 如果指定 a/b/c 时 a .b 不存在,一起创建出来 cp       复制文件或文件夹 -r 复制文件夹 rmdir   删除空的文件夹 -p 类似于mkdir 沿途为空则一起删除 rm       删除文件或文件夹 -rf 递归静默删除 mv      移动文件(重命名)       如果目标和源 目录未改变,则移动的效果为重命名 2.文件属性的设置 chmod  改变文件的mo

PYTHON对文件及文件夹的一些操作

python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w)           直接打开一个文件,如果文件不存在则创建文件 创建目录:os.mkdir("file")                   创建目录 复制文件:shutil.copyfile("oldfile","newfile&

C#文件夹操作之Directory类和DirectoryInfo类

问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同

linux 下文件及文件夹操作常用命令

文件及文件夹操作 1.创建文件夹 " mkdir 文件夹名 " 这样就会在当前目录创建一个文件夹. 2.复制文件 cp 3.剪切 mv 编辑文件内容 vi 或vim 一般来说vi是基本功能,vim比vi功能强大一些. 一些基本的操作是 打开或新新文件   vi 文件路径 打开时是只读模式,要写编辑先输入一个i 这时就是插入模式 就可以录入你想录的信息了. 当录完后,可以保存退出,方法是 先按"ESC"退出插入模式,然后 输入 :wq  然后回车,就保存退出了. 也可

PHP文件夹操作2

mkdir("路径文件名"); 创建文件夹 imdir("路径文件名"); 删除文件夹(只能删除空的文件夹) rename("路径","新路径"); 移动文件夹(可以修改名字) 文件操作: touch("路径"); 创建文件 copy("文件路径","新文件路径"); 复制文件 unlink("文件路径"); 删除文件 file_get_conte

python中对文件、文件夹的操作需要涉及到os模块和shutil模块。

创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件 创建目录:os.mkdir("file") 创建目录 创建多层新目录:def mkdirs(path): # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True #

iOS开发——Swift篇&amp;文件,文件夹操作

文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍历一个目录下的所有文件 1 //假设用户文档下有如下文件和文件夹[test1.txt,fold1/test2.txt] 2 let manager = NSFileManager.defaultManager() 3 let urlForDocument = manager.URLsForDirectory