这里我们先理解一下什么是序列化和反序列化。简单的来说序列化就是把其他类型转化为字节序列类型(byte[]),这种类型的转换就是序列化。而反序列化就是把字节序列类型转化为对象类型。这里对象类型可以是多样的,一般都是值类型的转换。甚至都可以是图片,以及其他对象进行序列化,只不过会出现乱码的情况。

IO文件的创建:

1、第一种方式是通过外部去创建

2、通过代码的方式创建

string s = Application.dataPath+"文件路径";

对文件信息的访问:

FileInfo f = new FileInfo(Application.dataPath + "/flod/b.text");
print(f.Name);//文件名称
if (!f.Exists)//不存在就创建b
        {
            f.Create();
        }f.MoveTo(Application.dataPath + "/flod/c.text");//把b文件重命名为c

IO文件的操作:

File.WriteAllText()写入文件
string s1 = "Hello World";
 File.WriteAllText(Application.dataPath + "/flod/b.text", s1);//把s1放入文件b中 string[] n1 = { "男", "女" };
 File.WriteAllLines(Application.dataPath + "/flod/b.text", n1);//以多行的形式把s1内容覆盖为n1的内容  string s3 = "变成";
   byte[] s4 = Encoding.UTF8.GetBytes(s3);//序列化内容
   File.WriteAllBytes(Application.dataPath + "/flod/b.text", s4);//以字节的形式存入文本File.AppendAllText(Application.dataPath + "/flod/b.text",“\n123”)//不覆盖之前的把内容去添加新内容在之前的文件上

读取文本信息:

 File.ReadAllText();读取所有行的信息

//读取所有行数据
 string s = Application.dataPath + "/flod/b.text";
 string s1 = File.ReadAllText(s);
 print(s1);

 File.ReadAllLines();分行读取信息,一行一行的读取信息,这里需配合换行符进行使用

//一行一行的读取所有的信息
string s = Application.dataPath + "/flod/b.text";
string[] s2 = File.ReadAllLines(s);
print(s2)

 File.ReadAllBytes()反序列化读取全部行信息。

//反序列化读取文本所有信息

byte[] s3 =File.ReadAllBytes(Application.dataPath + "/flod/bg.jpg");
string s4 =Encoding.UTF8.GetString(s3);
print(s4);

 文件流形式读文件与写文件:

方法1:

文件流读取文件:

void FileStreamRead()//文件流形式读的形式,反序列化
    {
        //文件路径
        string n = Application.dataPath + "/flod/b.text";
        if (File.Exists(n))//判断是否存在
        {
            //创建文件流构造函数,FileMode.Open打开文件流,读取内容
                //new FileStream(文件路径,文件的操作形式,文件的读取)
            using (FileStream fs = new FileStream(n, FileMode.Open, FileAccess.ReadWrite))
            {
                //反序列化
                //获取文件的长度,并进行序列化管理
                byte[] b = new byte[fs.Length];

                //获取的是包含文件名称,以及文件内容的的所有字节长度
                int lenth = fs.Read(b, 0, b.Length);
                //反序列化操作,把获取的序列化文件b,进行反序列化操作,进行读取里面的文本内容
                string s =Encoding.UTF8.GetString(b, 0, lenth);
                print(s);
                fs.Close();//关闭文件
            }
        }
    }

文件流写入文件:

void FileStreamWrite()//文件流形式写的形式,序列化操作
    {
        //查找文件
        string n = Application.dataPath + "/flod/b.text";
        if (File.Exists(n))//判断文件是否存在
        {
            //创建文件流构造函数,FileMode.Create写入文件,读取内容
            //new FileStream(文件路径,文件的操作形式,文件的读取)
            using (FileStream fs=new FileStream(n, FileMode.Create, FileAccess.ReadWrite))
            {
                //需要写入文件的内容
                string s = "Is my God ";
                //对写入文件的内容进行序列化操作
                byte[] s1 =Encoding.UTF8.GetBytes(s);
                //写入文件
                fs.Write(s1, 0, s1.Length);

                fs.Flush();//刷新缓存区
                fs.Close();//关闭文件
            }
        }
    }

方法2:

string s = Application.dataPath + "/flod/b.text";

        if (File.Exists(s))
        {
            //读的操作,创建一个读的构造函数

            using (StreamReader reader = new StreamReader(s, Encoding.UTF8))
            {
                while (true)
                {
                    //读取一行内容,在死循环里读取文件里所有的文件
                    string n = reader.ReadLine();
                    if (n == null)//当读取的内容为空时跳出循环
                    {
                        break;

                    }
                }

                reader.Close();
            }

              //写入的操作,创建一个写入的构造函数
            using (StreamWriter writer=new StreamWriter(Application.dataPath + "/flod/b.text"))
            {
                   string s = "Hello World";
                //创建一个WriteLine()写入的方法,把内容写入文件内  
                 writer.WriteLine(s);              
                writer.WriteLine(new char[]{'2','3'});
                writer.Close();
            }

        }
    }