UD4L2——文件相关

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
System.IO                //输入输出命名空间
File //文件操作公共类
File.Exists() //判断文件是否存在
File.Create() //创建文件
File.WriteAllBytes() //向文件覆盖写入字节数组
File.WriteAllLines() //向文件覆盖一行行写入字符串数组
File.WriteAllText() //向文件覆盖写入字符串
File.ReadAllBytes() //读取文件字节数组
File.ReadAllLines() //读取以一行字符串为元素,从文件内读取字符串数组
File.ReadAllText() //读取文件字符串
File.Delete() //删除文件
File.Copy() //复制文件
File.Replace() //替换文件
File.Open() //以流形式打开文件

代码中的文件操作

在电脑上我们可以在操作系统中创建删除修改文件,可以增删查改各种各样的文件类型
代码中的文件操作就是通过代码来做这些事情

文件相关操作公共类

C#提供了一个名为File(文件)的公共类
让我们可以快捷的通过代码操作文件相关
类名:File
命名空间: System.IO

File类提供了各种方法帮助我们进行文件的基础操作,需要记住这些关键API
一般情况下想要整体读写内容 可以使用File提供的WriteRead相关功能

文件操作File类的常用内容

  1. 判断文件是否存在

    参数为路径+文件名,判断该文件是否存在

    1
    2
    3
    4
    5
    6
    7
    8
    if (File.Exists(Application.dataPath + "/UnityTeach.try"))
    {
    print("文件存在");
    }
    else
    {
    print("文件不存在");
    }
  2. 创建文件

    参数为路径+文件名,按照该参数指示的路径创建一个文件,会返回一个文件流,文件流具体内容在下一章里详细详解

    1
    FileStream fs = File.Create(Application.dataPath + "/UnityTeach.uni");
  3. 写入文件

    注意,以下所有的方法,都会在没有文件的情况下直接创建文件,在有重名文件的时候直接覆盖原文件

    • 将指定的字节数组,写入到指定路径的文件中

      参数为路径+文件名,将字节数组写入到参数指示的路径的文件内

      1
      2
      byte[] bytes = BitConverter.GetBytes(999);
      File.WriteAllBytes(Application.dataPath + "/UnityTeach.uni", bytes);

      写入文件结果

      1
      E7 03 00 00
    • 将指定的string数组内容,一行行写入到指定路径中

      参数为路径+文件名,按照字符串数组一行行的写入到参数指示的路径的文件内

      1
      2
      string[] strs = new string[] { "123", "SevenL", "123123kdjfsalk", "123123123125243" };
      File.WriteAllLines(Application.dataPath + "/UnityTeach2.uni", strs);

      写入文件结果

      1
      2
      3
      4
      5
      123
      SevenL
      123123kdjfsalk
      123123123125243

    • 将指定字符串写入指定路径

      参数为路径+文件名,将字符串写入到参数指示的路径的文件内,支持转义字符

      1
      File.WriteAllText(Application.dataPath + "/UnityTeach3.uni", "学习ing\n学习ing123123123123");

      写入文件结果

      1
      2
      学习ing
      学习ing123123123123
  4. 读取文件

    • 读取字节数据

      参数为路径+文件名,返回读取到的字节数组

      1
      2
      bytes = File.ReadAllBytes(Application.dataPath + "/UnityTeach.uni");
      print(BitConverter.ToInt32(bytes, 0));
    • 读取所有行信息

      参数为路径+文件名,返回读取到的字符串数组,每行作为字符串数组的一个元素

      1
      2
      3
      4
      5
      strs = File.ReadAllLines(Application.dataPath + "/UnityTeach2.uni");
      foreach (var s in strs)
      {
      print(s);
      }
    • 读取所有文本信息

      参数为路径+文件名,返回读取到的字符串

      1
      2
      string str = File.ReadAllText(Application.dataPath + "/UnityTeach3.uni");
      print(str);
  5. 删除文件

    参数为路径+文件名,删除指定的文件,注意!删除打开中的文件,会报错

    1
    File.Delete(Application.dataPath + "/UnityTeach.uni");
  6. 复制文件

    参数一:现有文件 需要是流关闭状态
    参数二:目标文件 (如果该路径下文件已经存在且参数三不为****​true,会报错)
    参数三:如果参数二目标文件已经存在,是否强制覆盖该文件

    1
    File.Copy(Application.dataPath + "/UnityTeach2.uni", Application.dataPath + "/UnityTeach2_copy.copyuni");
  7. 文件替换

    参数一:用来替换的路径
    参数二:被替换的路径
    参数三:备份路径

    会使用参数一路径的文件,替换掉参数二路径的文件,参数二路径的文件备份会被写到参数三

    1
    2
    3
    File.Replace(Application.dataPath + "/UnityTeach3.uni",
    Application.dataPath + "/UnityTeach2_copy.copyuni",
    Application.dataPath + "/UnityTeach2_copy_backups.copyuni");
  8. 以流的形式,打开文件并写入或读取

    参数一:路径
    参数二:打开模式(新建、开启、创建、开启或者创建,追加,截断)
    参数三:访问模式(读、写、读写)

    返回一个文件流

    1
    FileStream fs = File.Open(Application.dataPath + "/UnityTeach2.uni", FileMode.OpenOrCreate, FileAccess.ReadWrite);