Unity Fileinfo和Directoryinfo以及File与Filestream还有Streamwriter和Streamreader

简单记录一下

1.    Fileinfo和Directoryinfo  

 

对于文件和文件夹的操作,Fileinfo和Directoryinfo是对文件和文件夹进行一些属性类的操作,比如文件的创造,移动,删除,重建,是不能对文件里面具体的内容进行操作的。

FileInfo 类   fileinfo类是对于文件的操作,

 FileInfo strint = new FileInfo(str.ToString());
        if (!strint.Exists )  //如果不存在 就创建
        {
            strint.Create();
        }

下面是directoryinfo类主要是对文件夹进行操作

 DirectoryInfo dirinfo = new DirectoryInfo(@"D:\text");
        //获取其父目录;
        if (!dirinfo.Exists)
        //如果该文件夹不存在,则新建一个该文件夹
        {
            dirinfo.Create();
        }
        dirinfo.CreateSubdirectory("这是子目录");

这两个类来读取文件和文件夹属性,在这两个类中主要是用来查看文件的基本属性,创建或者移动文件,判断路径是否存在等,这两个类都是在 System.IO类下的,使用他们之前需要先using一下。fileinfo和directoryinfo类就是一般的对文件和文件夹的操作,包括读取信息啊,进行文件夹的复制和删除,创建等。这两个类都是非静态类在使用时,需要进行实例化。

 

2.   File和Filestream   

一般file类的操作对象是文本文件,而filestream类的操作是非文本文件用的比较多。如果文件太大,则用file类处理会很慢,这时用Filestream  数据流类就比较适合读文件较大的文件

首先是File 

 string str = File.ReadAllText("");
        //输入一个相对路径,返回的是一个字符串型,是一行一行的读取输出;ReadAllText
        Debug.Log(str);
        byte[] str1 = File.ReadAllBytes("");
        //这是读取文件的内容,返回的是字节形式的数组;ReadAllBytes
        foreach (var aa  in str1)
        //遍历方式读取数组中的内容;
        {
            Debug.Log(aa);
        }
        byte[] str2 = File.ReadAllBytes("图片.png");
        //读取一个图片,结果以字节的形式返回在一个数组内;ReadAllBytes
        foreach (var item in str2)
        {
            Debug.Log(item);
        }

File 的写入操作

 //  写入操作
        File.WriteAllText("写入的文件.txt", "这是写入的内容");
        //在默认输出路径下,创建一个txt文件,并且在其中写入以上内容;

        File.WriteAllLines("新的文件", new string[] { "qwe", "wer" });
        //在默认输出路径下创建一个新的txt文件,并且在其中写入数组元素;

        byte[] arr = File.ReadAllBytes("图片.png");
        //首先将图片的字节存储在字节数组中;
        File.WriteAllBytes("这是图片.png", arr);

FileStream类  读的操作

  //读的操作
        FileStream feadt = new FileStream("TextFile1.txt", FileMode.Open);
      
        //实例化数据流,对文件的操作是打开;
        byte[] arrt = new byte[1024];
        //定义一个1024字节的数组,用于数据存储;\
        while (true)
        {
            int len = feadt.Read(arr, 0, arr.Length);
            //从流中读取数据块并把它放在定义好的数组中,返回的该文件的真实长度;
            //读入缓冲区中的总字节数。如果当前的字节数没有所请求那么多,则总字节数可能小于所请求的字节数;或者如果已到达流的末尾,则为零
            if (len == 0)
            {
                Debug.Log("lol");
                break;
            }
            for (int i = 0; i < len; i++)
            {
                Debug.Log(arr[i] + " ");
            }
        }

 

 FileStream类  读写的操作

 //实例化一个读操作,目标文件是该默认输出文件的图片;
        FileStream fsread = new FileStream("123.png", FileMode.Open);

        //实例化一个写操作,这里是创建一个文件,用来写入数据;
        FileStream fswrite = new FileStream("456.png", FileMode.Create);
        //定义一个2M的字节存储空间;
        byte[] arrt = new byte[1024 * 1024 * 2];
        
        while (true)
        {
            int len = fsread.Read(arrt, 0, arr.Length);
            //实际的文件大小;
            if (len == 0)
            {
                Debug.Log("HAO D");
                break;
            }
            fswrite.Write(arr, 0, len);
            //将数组中的数据写入目标位置;
        }
        fsread.Close();
        fswrite.Close();
        //关闭数据流;

 

 

3.streamreader,这是对文件内部数据的读操作:

 

  StreamReader sread = new StreamReader("TextFile1.txt");
        //创建一个实例对象,所要读取的文件时TEXE文件;
        while (true)
        {
            string strin = sread.ReadLine();
            //该方法返回的时一行,就是执行一次返回一行;
            if (strin == null)
            {//如果读取到文件的最后,则是null
                Debug.Log("lol");
                break;
            }
          Debug.Log(str);

        }

 

 

 

4.streamweiter类,就是写入数据流:

 

  StreamWriter swrit = new StreamWriter("TEXT2.txt");
        //创建一个写数据流,写的数据流写入的时默认路径下面的文件;
        while (true)
        {
            string strin = "lol";
            //用户输入需要写的数据;
            if (strin == "lol")
            { break; }
            swrit.Write(str);

        }
        swrit.Close();

 

 

 

 有需要会在补充

上一篇:.net core 实现文件下载


下一篇:反序列化