欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#路径,文件,目录及IO常见操作汇总

程序员文章站 2023-11-14 19:03:52
本文实例汇总了c#路径,文件,目录及io常见操作。分享给大家供大家参考。具体如下: 问题1:如何判定一个给定的路径是否有效/合法; 通过path.getinvalidp...

本文实例汇总了c#路径,文件,目录及io常见操作。分享给大家供大家参考。具体如下:

问题1:如何判定一个给定的路径是否有效/合法;

通过path.getinvalidpathchars或path.getinvalidfilenamechars方法获得非法的路径/文件名字符,可以

根据它来判断路径中是否包含非法字符;

问题2:如何确定一个路径字符串是表示目录还是文件;

1、使用directory.exists或file.exist方法,如果前者为真,则路径表示目录;如果后者为真,则路径表示文件;

2、上面的方法有个缺点就是不能处理那些不存在的文件或目录。这时可以考虑使用path.getfilename方法获得

其包含的文件名,如果一个路径不为空,而文件名为空那么它表示目录,否则表示文件;

问题3:如何获得路径的某个特定部分(如文件名、扩展名等);

path.getdirectoryname :返回指定路径字符串的目录信息;
path.getextension : 返回指定的路径字符串的扩展名;
path.getfilename : 返回指定路径字符串的文件名和扩展名;
path.getfilenamewithoutextension :返回不具有扩展名的路径字符串的文件名;
path.getpathroot :获取指定路径的根目录信息;

问题4:如何准确地合并两个路径而不用去担心那个烦人的"\"字符;

使用path.combine方法,它会帮你处理烦人的"\";

问题5:如何获得系统目录的的路径(如桌面,我的文档,临时文件夹等);

主要是使用system. environment类的相关属性和方法:
environment. systemdirectory属性:获取系统目录的完全限定路径;
environment. getfolderpath方法:该方法接受的参数类型为environment.specialfolder枚举,
通过这个方法可以获得大量系统文件夹的路径,如我的电脑,我的电脑,桌面,系统目录等;
path.gettemppath方法:返回当前系统的临时文件夹的路径;

问题6:如何判断一个路径是绝对路径还是相对路径;

使用path.ispathrooted方法;

问题7:如何读取或设置当前目录;

使用directory类的getcurrentdirectory和setcurrentdirectory方法;

问题8:判断两个文件的内容是否一致

public static bool isfilesequal(string filename1, string filename2)
{
  using (hashalgorithm hashalg = hashalgorithm.create())
  {
   using (filestream fs1 = new filestream(filename1, filemode.open), fs2 = new filestream(filename2, filemode.open))
   {
    byte[] hashbytes1 = hashalg.computehash(fs1);
    byte[] hashbytes2 = hashalg.computehash(fs2);
    // 比较哈希码
    return (bitconverter.tostring(hashbytes1) == bitconverter.tostring(hashbytes2));
   }
  }
}

问题9:计算一个目录的大小

private long calculatedirsize(directoryinfo di, bool includesubdir)
{
  long totalsize = 0;
  // 检查所有(直接)包含的文件
  fileinfo[] files = di.getfiles();
  foreach (fileinfo file in files)
  {
   totalsize += file.length;
  }
  // 检查所有子目录,如果includesubdir参数为true
  if (includesubdir)
  {
   directoryinfo[] dirs = di.getdirectories();
   foreach (directoryinfo dir in dirs)
   {
    totalsize += calculatedirsize(dir, includesubdir);
   }
  }
  return totalsize;
}

希望本文所述对大家的c#程序设计有所帮助。