C#路径,文件,目录及IO常见操作汇总
作者:我心依旧 发布时间:2022-05-03 21:21:13
本文实例汇总了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#程序设计有所帮助。


猜你喜欢
- /// <summary>/// 计算日期的间隔(静态类)/// </summary>public static c
- Command 常用属性CommText 要下达至数据源的命令CommanTimeout 出错等待时间Command 三种方法Execute
- 目录一、Java 类加载过程1、字节码编译2、加载3、连接4、初始化总结一、Java 类加载过程1、字节码编译编写好 Java 源码 Stu
- 1、前言  原先的页面访问地址为:http://127.0.0.1:8888/office/schdul
- 本文实例为大家分享了android自定义Camera实现录像和拍照的具体代码,供大家参考,具体内容如下源码:package com.exam
- 前言似乎委托对于C#而言是一种高级属性,但是我依旧希望你就算第一次看我的文章,也能有很大的收获。所以本博客的语言描述尽量简单易懂,知识点也是
- MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 * :MD5MD5加密后是一个字
- Nacos 的部署,我使用的时docker 部署(单机模式 Mysql),官网文档:https://nacos.io/zh-cn/docs/
- 本文实例为大家分享了Android实现图片上传蒙层进度条的具体代码,供大家参考,具体内容如下需求上传图片时在图片上增加蒙层,蒙层随着上传的大
- 什么是OKHttp一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进
- 把做工程过程常用的一些代码段做个记录,下面代码是关于Java实现图片倒影的的代码,应该对大家有较大用处。 public class
- 向上转型:子类对象转为父类,父类可以是接口。公式:Father f = new Son();Father是父类或接口,son是子类。向下转型
- 平均背景法的基本思想是计算每个像素的平均值和标准差作为它的背景模型。平均背景法使用四个OpenCV函数:cvAcc(),累积图像;cvAbs
- C# XmlDocument操作XMLXML:Extensible Markup Language(可扩展标记语言)的缩写,是用来定义其它语
- Spring容器可以自动装配相互协作bean之间的关系,这有助于减少对XML配置,而无需编写一个大的基于Spring应用程序的较多的<
- 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件
- springboot返回文件流@GetMapping(value = "/file/{fileName}")public
- 首先假设你的应用程序配置文件如下:<?xml version="1.0" encoding="utf-8
- 前言去重,对于很多场合必不可少。写此篇文章是因为在之前做某个画面中,我在数据库中进行 Distinct 和 Order By 去重,发现影响
- 前言最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下...准备工作1.注册友盟账号创建应用,获取key:申请地