一、文件操作

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、判断该路径是文件还是文件夹

      1. string path = "D:\\test.txt";
      2. // 方式一
      3. if (File.GetAttributes(path).CompareTo(FileAttributes.Directory) == 0)
      4. {
      5. Console.WriteLine("文件夹");
      6. }
      7. else
      8. {
      9. Console.WriteLine("文件");
      10. }
      11. // 方式二
      12. if (File.Exists(path))
      13. {
      14. Console.WriteLine("文件");
      15. }
      16. else if (Directory.Exists(path))
      17. {
      18. Console.WriteLine("文件夹");
      19. }

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

      1. /// <summary>
      2. /// 创建目录,可以直接Directory.CreateDirctory(string dirPath),或使用以下方法
      3. /// </summary>
      4. /// <param name="path"></param>
      5. public static void CreateDirtory(string path)
      6. {
      7. if (!File.Exists(path))
      8. {
      9. string[] dirArray = path.Split('\\');
      10. string temp = string.Empty;
      11. for (int i = 0; i < dirArray.Length - 1; i++)
      12. {
      13. temp += dirArray[i].Trim() + "\\";
      14. if (!Directory.Exists(temp))
      15. Directory.CreateDirectory(temp);
      16. }
      17. }
      18. }
      19.  
      20. /// <summary>
      21. /// 文件夹的复制
      22. /// </summary>
      23. /// <param sourceDir="string">要复制的原路径</param>
      24. /// <param targetDir="string">要复制的目的路径</param>
      25. /// <param name="overwrite">若为true,则允许覆盖现有文件;否则为false</param>
      26. /// <param name="copySubDir">是否复制子目录</param>
      27. public static void DirectoryCopy(string sourceDirPath, string targetDirPath, bool overwrite, bool copySubDir)
      28. {
               // 如果目录路径不是以路径符“\”结尾,则在目录路径后加上路径符“\”
        if (sourceDirPath[sourceDirPath.Length - 1] != Path.DirectorySeparatorChar)
        sourceDirPath += Path.DirectorySeparatorChar;
      29. DirectoryInfo sourceDirInfo = new DirectoryInfo(sourceDirPath);
      30. try
      31. {
      32. if (!sourceDirInfo.Exists)//判断所指的文件或文件夹是否存在
      33. {
      34. return;
      35. }
      36. if (!Directory.Exists(targetDirPath))
      37. {
      38. Directory.CreateDirectory(targetDirPath);
      39. }
      40. // 获取文件夹中所有文件和文件夹
      41. FileSystemInfo[] sourceFiles = sourceDirInfo.GetFileSystemInfos();
      42. // 对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作
      43. foreach (FileSystemInfo sourceFileSys in sourceFiles)
      44. {
      45. FileInfo file = sourceFileSys as FileInfo;
      46. if (file != null) // 如果是文件的话,进行文件的复制操作
      47. {
      48. string targetFilePath = Path.Combine(targetDirPath, file.Name);
      49. if (File.Exists(targetFilePath) && overwrite)
      50. {
      51. File.SetAttributes(targetFilePath, FileAttributes.Normal);
      52. }
      53. file.CopyTo(targetFilePath, overwrite); // 将文件复制到指定的路径中
      54. }
      55. else
      56. {
      57. if (copySubDir)
      58. {
      59. DirectoryCopy(sourceFileSys.FullName, Path.Combine(targetDirPath, sourceFileSys.Name), overwrite, copySubDir);
      60. }
      61. }
      62. }
      63. }
      64. catch (Exception ex)
      65. {
      66. throw ex;
      67. }
      68. }
      69.  
      70. /// <summary>
      71. /// 删除指定的目录
      72. /// </summary>
      73. /// <param name="dirPath">目录路径</param>
      74. /// <param name="isDelSelf">是否删除本身:true为删除指定目录,false为删除指定目录下的所有目录、子目录和文件</param>
      75. public static void DeleteDirectory(string dirPath, bool isDelSelf)
      76. {
      77. if (Directory.Exists(dirPath))
      78. {
      79. if (isDelSelf)
      80. {
      81. Directory.Delete(dirPath, true);
      82. }
      83. else
      84. {
      85. foreach (string content in Directory.GetFileSystemEntries(dirPath))
      86. {
      87. if (Directory.Exists(content))
      88. Directory.Delete(content, true);
      89. else if (File.Exists(content))
      90. File.Delete(content);
      91. }
      92. }
      93. }
      94. }

      三、文件路径

      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

C# 文件和文件夹操作的更多相关文章

  1. [No000083]文件与文件夹操作

    #region Folder option 文件夹操作 /// <summary> /// 指定目录是否存在 /// </summary> /// <param name ...

  2. PHP 文件夹操作「复制、删除、查看大小」递归实现

    PHP虽然提供了 filesize.copy.unlink 等文件操作的函数,但是没有提供 dirsize.copydir.rmdirs 等文件夹操作的函数(rmdir也只能删除空目录).所以只能手动 ...

  3. Windows Store App 用户库文件夹操作

    上面介绍了与用户库文件有关的操作,包括创建.读写等,下面将介绍与用户库文件夹相关的操作. 与文件操作一样,想要对用户库文件夹进行操作,需要首先获取用户库的相应位置,获取的方法上面已经介绍过了,这里不再 ...

  4. Winform 基础知识 之文件夹操作

    using System.IO; /// <summary> /// 删除文件夹下所有文件 /// </summary> /// <param name="di ...

  5. .Net文件*夹*操作

    一.文件夹操作 Directory类,DirectoryInfo类.使用using System.IO命名空间 (一)创建文件夹 方法一: private string path = @"F ...

  6. Python操作文件、文件夹、字符串

    Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...

  7. 【CITE】C#目录、文件、文件夹操作

    1.   在一个目录下创建一个文件夹 if (!System.IO.Directory.Exists(path)) System.IO.Directory.CreateDirectory(path); ...

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

    python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件:1) os.mknod("test.txt") 创建空文件2) open("test. ...

  9. Java中创建操作文件和文件夹的工具类

    Java中创建操作文件和文件夹的工具类 FileUtils.java import java.io.BufferedInputStream; import java.io.BufferedOutput ...

随机推荐

  1. Memcache升级版:CouchBase的安装配置与使用说明

    Memcache基本上已经是开发的标配了,但是对于Memcache集群,很多线上部署仍然是很单薄的. 几个存在的问题:不健壮.数据不安全.配置变更可能导致存取异常.后备数据的一致性 鉴于存在以上问题, ...

  2. 在Activity中响应ListView内部按钮的点击事件

    最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在Adapter中响应? 对于这个问题,我最初给他的解答是,在Adapter中定义一个回调接口,在A ...

  3. cdh环境下,spark streaming与flume的集成问题总结

    文章发自:http://www.cnblogs.com/hark0623/p/4170156.html  转发请注明 如何做集成,其实特别简单,网上其实就是教程. http://blog.csdn.n ...

  4. DSP using MATLAB 示例Example3.23

    代码: % Discrete-time Signal x1(n) : Ts = 0.0002 Ts = 0.0002; n = -25:1:25; nTs = n*Ts; x1 = exp(-1000 ...

  5. jQuery-认识JQuery,jQuery选择器

    认识JQuery: 1.window.onload与$(document).ready()的区别 window.onload $(document).ready() 执行时机 必须等待网页中的所有内容 ...

  6. Spring Boot 集成MyBatis

    http://blog.csdn.net/isea533/article/details/50359390

  7. 线段树(区间合并) LA 3989 "Ray, Pass me the dishes!"

    题目传送门 题意:动态最大连续子序列和,静态的题目 分析:nlogn的归并思想.线段树维护结点的三个信息,最大前缀和,最大后缀和,该区间的最大和的两个端点,然后答案是三个的better.书上用pair ...

  8. ZOJ3229 Shoot the Bullet(有源汇流量有上下界网络的最大流)

    题目大概说在n天里给m个女孩拍照,每个女孩至少要拍Gi张照片,每一天最多拍Dk张相片且都有Ck个拍照目标,每一个目标拍照的张数要在[Lki, Rki]范围内,问最多能拍几张照片. 源点-天-女孩-汇点 ...

  9. jQuery Dialog and timepicker显示层的问题

    timepicker官网http://timepicker.co/demos/ 当在dialogue上面调用时间选择时,时间选择的框框被dialogue窗口挡住了. 搜出来的方法说修改css,根本改不 ...

  10. CF#335 Lazy Student

    Lazy Student time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...