一、前言
学习心得:C# 入门经典第8版书中的第20章《文件》
二、操作文件的相关类
在C#应用程序中Syste.IO名称空间包含用于在文件中读写数据的类。在此我列举一下File、Directory、Path、FileInfo、DirectoryInfo、FileSystemInfo、FileSystemWatcher。其中在System.IO.Compression名称空间中还包含读写压缩文件。DeflateStream、GZipStream。这两个在后续文章中我会慢慢提到解释,但由于大量方法在网上都可以查找得到,本节我仅仅只介绍部分方法。
三、File和Directory类
1 File 类
File通常用于操作文件的静态类(Copy、Create、Delete、Open、Move) 都是些常见的静态方法这里不做介绍,大家如不了解使用可以查一查。
2 Directory类
Directory通常用于操作文件夹的静态类,其中DIcrectory中有很多方法如: CreateDirectory 创建目录、Delete 删除目录、GetDirectories 获得指定目录下的目录名、GetFiles 获得指定目录下的文件名、GetFileSystemEntries 获取指定目录下的目录名和文件名、Move 移动文件、GetCurrentDirectory 获取应用程序的工作目录 GetCreationTime 获取目录创建的事件等很多方法都很简单使用。
举个例子:
Directory.CreateDirectory(@"C\目录");
Directory.GetDirectories(@"C\目录");
Directory.GetFiles(@"C\目录");
Directory.GetFileSystemEntries(@"C\目录");
Directory.GetCurrentDirectory();
Directory.GetCreationTime(@"\目录");
Directory.Delete(@"C\目录");
//返回目录名的IEnumerable<string>集合
IEnumerable<string> s = Directory.EnumerateDirectories(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件名的IEnumerable<string>集合
IEnumerable<string> s2 = Directory.EnumerateFiles(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
//返回文件和目录名的IEnumerable<string>集合
IEnumerable<string> s3 = Directory.EnumerateFileSystemEntries(@"C:\Users\Administrator\Desktop\练习\bin\Debug");
四、FileInfo类
FileInfo类和File有很多相似的方法,但它不是静态类,它需要一个字符串参数,作为方法操作的文件路径。其次FileInfo对象是表示一个磁盘位置或者网络位置。
举个例子:
//使用File类需要每次指定文件路径
File.Open(@"C\",FileMode.Open,FileAccess.Read);
//使用Fileinfo指定一次后方法都是对当前路径进行操作
FileInfo fileInfo = new FileInfo(@"C\");
if (fileInfo.Exists)
{
//读取
fileInfo.OpenRead();
}
问:什么时候使用File什么时候使用FileInfo?
答:在多次对一个文件操作时使用FileInfo ,因为它不需要重复指明操作路径。但如果只对文件操作一次的情况下推荐还是使用File静态类因为它不需要创建对象,单一调用要快一点,不必实例化新对象在调用方法 。
提示:路径中@“C\” 前面的@ 是代表取消当前字符串的转义符效果,不加@则需要将\改为\\才能代表\的含义。
五、DirectoryInfo 类
DirectoryInfo 与Directory类,类似,在使用选择上也和上述File和FileInfo的使用场景类似。其中它有两个特别的属性。
DirectoryInfo directoryInfo = new DirectoryInfo(@"C\菜板");
//获取一个包含当前目录的目录
var s= directoryInfo.Parent;
//获取包含目录的根目录
var str= directoryInfo.Root;
六、相对路径与绝对路径
在文章当中我们使用的路径都是绝对路径。绝对路径是它直接指向了磁盘中的文件所在位置但我们也可以使用相对路径来指定我们文件所在的位置。使用“文件名称.后缀名”
举个例子:
//在 项目文件\bin\Debug\中创建了文件夹
var str = Directory.CreateDirectory("A文件夹");
示例解释:
"A文件夹"代表的文件就是指 项目文件\bin\Debug 路径下创建一个“A文件夹”为名称的文件夹。相对位置都是指向工作目录, 工作目录就是=>项目文件\bin\Debug。
效果:
提示:获取相对位置,上移一个目录路径使用..代表当前目录的上一个目录。
举个例子(在bin目录中创建文件夹):
var str = Directory.CreateDirectory(@"..\A文件夹");
本章还有大部分内容,我们下一篇见!!!