文 件 操 作

引入System.IO命名空间

1.文件信息

   1.1 FileInfo 实例对象名=new FileInfo(string filePath);

           filePath参数为文件所在资源路径(Application.data/*Assests*/+“/文件所在文件夹/.../文件名称.文件类型”);

         实例对象名.DirectoryName//文件资源路径(不包含文件名);

         实例对象名.FullName//文件资源路径(包含文件名);

         实例对象名.IsReadOnly/文件是否只读;

         实例对象名.Length/返回文件字节码长度;

   1.2 实例对象名.MoveTo(Application.data/*Assests*/+“/文件所在文件夹/.../文件名称(新).文件类型”)//文件重命名;

2.读写文件

    2.1 File.ReadAllText(string filePath) //读取文件所有行(未经序列化的文件内容);

          File.WriteAllText(string filePath,文件内容)     //所有文件内容全部写入

    2.2 File.ReadAllLines(string filePath)    //一行一行从文件中读取(未经反序列化的文件内容),返回值为文件内容对应的数组;

        File.WriteAllLines(string filePath,文件内容对应类型的数组

    2.3 File.ReadAllBytes(string filePath) //读取二进制文件,将所有字节码全部读出,返回值为字节码类型的数组;

        所以需要将返回字节码数组进行类型转化(原文件内容对应的类型)

        例:原文件内容为文本类型 string str=Encoding.Default.GetString(返回的字节码数组);

        File.WriteAllBytes(string filePath,字节码数组(将文件内容序列化))

     2.4 FileStream 文件流

        将创建文件流对象的过程写在using中,会自动的帮助我们释放流所占用的资源。

        读取

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
using System.Text;
/*
*创建者:
*创建时间:
*描述:
*版本:
*/
public class _3_10 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        ReadStreamFile();
    }
    void ReadStreamFile()
    {
        string path = Application.dataPath + "/File/f.txt";//文件所在资源路径
        using (FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read))//实例文件流对象(path/*文件所在资源路径*/,FileModel.Open/*文件打开方式*/,FileAccess.Read/*文件可执行的操作*/)
        {
            byte[] bytes = new byte[fs.Length];//定义字节码数组接收文件流读取的字节码文件的返回值
            int length=fs.Read(bytes/*, 0/*读取起始位置*/, bytes.Length/**读取的总长度/*/);//文件读取所有字节码并且返回长度;
            string strs= Encoding.Default.GetString(bytes/*,0,bytes.Length*/);//反序列化;转码
            print(strs);
            fs.Close();//关闭文件流操作对象            
        }
    }
}

         写入

        

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
using System.Text;
/*
*创建者:
*创建时间:
*描述:
*版本:
*/
public class _3_10 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        WriteStreamFile();
    }
    void WriteStreamFile()
    {
        string path = Application.dataPath + "/File/f.txt";
        using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
        {
            string s = "Hello";
            byte[] bytes = Encoding.Default.GetBytes(s);
            fs.Write(bytes, 0, bytes.Length);
            fs.Flush();//刷新缓存区
            fs.Close();
        }
    }
}

        2.5 追加文件内容

                File.AppendAllText(string filePath,文件内容

                File.AppendAllLines(string filePath,文件内容对应类型的数组

3.创建文件

File.Create()

返回值类型是一个FileStream,若在创建文件完毕后未关闭,则显示资源路径共享冲突(文件被占用)

解决方案1:使用FileStram类型对象接收File.Create的返回值,手动关闭,对象名称.Close();

解决方案2:在File.Create()后使用Dispose()( File.Create().Dispose()),将在执行创建完成时自动释放流所占用的资源

解决方案3:使用using(File.Create()),将创建文件流对象的过程写在using中,会自动的帮助我们释放流所占用的资源。

4.FileStream和File使用的场景

 将水缸A的满水,倒入到水缸B的空缸中,有两种方法:
    1)扛起整个水缸A,然后象霸王一样倒入到水缸B:    痛快干脆,但得力气大。
    2)牵一水管由水缸A导流到水缸B中:   温柔便巧,不需要费大力。
    
    File类读写文件,犹如方法1,全部搬运倾泄,耗费内存。只适合小文件操作。
    FileStream类读写文件,犹如方法2,小量多次便捷高效,适宜大小文件操作。


 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值