数据持久化

文件流 FileStream

C# 中的流是面向对象的抽象概念,是二进制字节的序列

文件是保存在磁盘中的进制字节,使用固定格式存储信息

流是一种动态的特殊的数据结构

首先我们在Unity中创建一个空物体,在创建一个C#脚本(CreateOrReadXML )并挂载上

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;

public class CreateOrReadXML : MonoBehaviour
{
    private string _path;

    private void Awake()
    {
        _path = Application.dataPath + "/Test.txt";
    }

    private void Start()
    {
    }

    private void OnGUI()
    {
        if (GUILayout.Button("写入"))
        {
            // 打开文件(FileMode.OpenOrCreate 如果文件不存在则创建新的文件,如果文件存在则直接读取)
            FileStream fileStream = File.Open(_path, FileMode.OpenOrCreate);
            // 写入文件
            // 需要将字符串转成字节   
            byte[] bytes = Encoding.UTF8.GetBytes("Hello world");
            fileStream.Write(bytes, 0, bytes.Length);
            // 关闭文件
            fileStream.Close();
        }
        if (GUILayout.Button("读取"))
        {
            // 打开文件
            FileStream fileStream = File.Open(_path, FileMode.Open);
            // 读取文件
            byte[] bytes = new byte[fileStream.Length];
            fileStream.Read(bytes, 0, bytes.Length);
            // 关闭文件
            fileStream.Close();
            string str = Encoding.UTF8.GetString(bytes);
            print(str);
        }
    }
}

读写流 StreamWriter|StreamReader

using System.IO;
using UnityEngine;

namespace FileS
{
    public class FileTest : MonoBehaviour
    {
        private void OnGUI()
        {
            if (GUILayout.Button("写入磁盘"))
            {
                StreamWriter streamWriter = new StreamWriter(Application.dataPath + "/Test2.txt", true);
                streamWriter.WriteLine("我是读写流");
                streamWriter.Close();
            }
            
            if (GUILayout.Button("读取数据"))
            {
                StreamReader reader = new StreamReader(Application.dataPath + "/Test2.txt");
                while (!reader.EndOfStream)
                {
                    print(reader.ReadLine());
                }
                reader.Close();
            }
        }
    }
}
上一篇
下一篇