一、概述
文件,具有永久存储及特定顺序的字节组成的一个有序、具有名称的集合;
流,提供一种向后备存储写入字节和从后备存储读取字节的方式;
读写文件和目录时可使用简单的API,也可使用先进的API提供更多的功能;
使用流,可以压缩数据,并且利用内存映射的文件和管道在不同的任务间共享数据;
二、文件系统
System.IO名称空间包含一些简单的API,其中最重要的类用于浏览文件系统和执行操作,如移动、复制和删除文件:
- FileSystemInfo-这是表示任何文件系统对象(如FileInfo和DirectoryInfo)的基类;
- FileInfo和File-表示文件系统上的文件;
- DirectoryInfo和Directory-表示文件系统上的文件夹;
- Path-包含的静态成员可用于处理路径名;
- DriveInfo-它的属性和方法提供了指定驱动器的信息;
1、检查驱动器信息
使用DriveInfo的GetDrives()静态方法获取DriveInfo对象数组,再访问每个驱动器信息;
var driveInfos = DriveInfo.GetDrives();
foreach (var driveInfo in driveInfos) Console.WriteLine($"Name:{driveInfo.Name} totalSize={driveInfo.TotalSize} freeSpace={driveInfo.TotalFreeSpace}");
2、Path
最常用的方法:
Path.Combine(),可把任意个字符串参数组合成完整的路径返回;
Path.GetFileName(),获取带扩展名的文件名;
Path.GetFileNameWithoutExtension(),获取不带扩展的文件名;
Path.GetExtension(),获取扩展名;
Path.GetDirectoryName(),获取文件夹路径名;
Path.GetFullPath(),获取包含文件名及扩展名的全路径名;
string path= Path.Combine(Directory.GetCurrentDirectory(),"test.txt");
var path1=Path.GetFileName(path);
var path2=Path.GetFileNameWithoutExtension(path);
var path3=Path.GetExtension(path);
var path4=Path.GetDirectoryName(path);
var path5=Path.GetFullPath(path);
Console.WriteLine($"文件名:{path1} 无扩展文件名{path2} 扩展:{path3}\n文件夹路径:{path4}\n全路径名:{path5}");
Environment.GetFolderPath(),获取特殊文件夹的路径:
var foldPath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Console.WriteLine(foldPath);//C:\Users\Administrator\Documents
3、文件和文件夹
File、Directory定义静态方法,FileInfo、DirectoryInfo提供实例方法,对于大多文件属性只读不可修改,但可设置创建时间和最后一次访问时间;
①File常用方法:
- File.WriteAllText(),创建并写入文件;
- File.WriteAllLines(),创建并写入所有行;
- File.ReadAllBytes(),读取文件所有内容;
- File.ReadAllLines(),读取文件所有行;
- File.AppendAllText(),追加的方式写入所有内容;
- File.AppendAllLines(),追加的方式写入所有行;
- File.Copy(),复制文件;
- File.Exists(),判断文件是否存在;
- File.Create(),创建指定路径文件;
- File.Open(),打开指定路径上的FileStream(文件流);
②Directory常用方法:
- Directory.Exists(),判断文件夹是否存在;
- Directory.GetDirectories(),获取指定目录中所有子目录的名称;
- Directory.GetDirectoryRoot(),返回指定路径的卷信息、根信息或二者同时返回;
- Directory.GetCurrentDirectory(),获取当前工作目录;
- Directory.GetFiles(),获取指定目录的所有文件名称;
- Directory.GetFileSystemEntries(),获取所有文件和子目录名称;
- Directory.GetParent(),检索指定路径的父目录;
③FileInfo常用属性(方法大多与File静态类相同)
- Directory:获取父目录实例;
- DirectoryName:获取表示目录完整路径的字符串;
- FullName:获取目录或文件的完整目录;
- Name:获取文件名;
④DirectoryInfo常用属性(方法大多与Directory静态类相同)
- Extension:获取表示文件扩展名部分的字符串;
- Parent:获取指定子目录的父目录;
- Root:获取路径的根部分;