C# IO 随笔

时间:2021-09-14 05:45:13

1.用File.Create创建文件,会返回一个FileStream对象,如果不关闭这个对象,无法用File.AppendAllText追加文本

  报错示例:

   File.Create("D://a.txt");
   File.AppendAllText("D://a.txt", "你好"); 

  正确示例:

   FileStream fs = File.Create("D://a.txt");

   fs.Close();

   File.AppendAllText("D://a.txt", "你好");

2.File.Copy如果目标文件存在,会报错,可以将第二个参数设置为True,覆盖文件

3.File.Move如果目标文件存在,会报错,无法进行替换操作

4.File.CreateText跟File.Create情况类似,会返回一个StreamWriter对象 , StreamWriter用法在后面会说到

5.File.OpenRead 和 File.OpenWrite 分别返回 只读的FileStream对象和 只写的FileStream对象

6.File.Replace 使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,,并创建被替换文件的备份

  示例:

    File.Replace("D://a.txt", "D://b.txt", "D://b-backup.txt");

    将文本b.txt的内容,替换成a.txt的内容,删除b.txt,并建立b的备份文件b-backup.txt

FileInfo类

FileInfo用来表示文件的基本信息 , 同时他还有File类的一些方法 

1.Attributes 使用FileAttributes枚举,获取或设置当前文件或目录的特性

2.Extension 获取文件扩展名,只读属性

3.FullName 文件完整路径(包含文件名),只读

4.Name  文件名称(带扩展名)

5.Directory 包含当前文件的目录,DirectoryInfo对象,只读属性

6.DirectoryName 文件完整路径(不包含文件名),只读

File类与FileInfo类的选择(个人理解 , 勿喷)

快速操作文件用File。

想用更多的方法、属性,用FileInfo。

Directory类

1.Directory.CreateDirectory  创建目录并返回一个DirectoryInfo对象

2.Directory.GetDirectories 返回子目录的数组

3.Directory.GetDirectoryRoot 返回磁盘根目录(如 D:/)

4.Directory.GetFiles  返回指定目录下所有文件的名称数组 

5.Directory.GetFileSystemEntries 返回指定目录下 , 文件和目录名称的数组,相当于 Directory.GetDirectories 和 Directory.GetFiles的并集

6.EnumerateDirectories , EnumerateFiles ,EnumerateFilesSystemEntries 相当于2,4,5的3个方法,返回IEnumerable<string>集合,性能比较好

DirectoryInfo类

包含的是Directory的一些基本信息

FileStream类

1.使用示例(最常用的)

  FileStream fs = new FileStream("D://a.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);

  文本读取

  实例化并打开了一个数据流对象

  int _length = (int)fs.Length;

  byte[] data = new byte[_length ];

  声明一个跟数据流对象同样长度的byte数组

  fs.Read(data,0,_length);

  将数据流对象读取到byte数组内

  string str = System.Text.Encoding.Default.GetString(data);

  将byte数组转换成文本

  fs.Flush();

  fs.Close();

  释放

  文本写入

  byte[] b = Encoding.Default.GetBytes("你好");

  将文本转换成byte数组

  fs.Write(b, 0, b.Length);

  写入

  fs.Flush();

  fs.Close();

  释放

  未完待续~~~~~~~~~~~~~~~~~~~~~~