zoukankan      html  css  js  c++  java
  • C#基础——IO

    最近一直忙着做项目,偶尔会碰到一些文件读写方面的需求,当我回忆读写的代码时,发现脑子里存在诸多空白。这是不妙的,于是连忙翻出以前记下的笔记,上面还存在着我当初写下的知识点。怕以后哪天笔记找不到了或者有破损,不如写到网上来,也方便自己查找。

    使用命名空间:using System.IO;

                //Encoding.Default:以默认形式转换字符,可以有效防止读出来的文本乱码
                File.ReadAllText("path",Encoding.Default);//读文件所有内容,返回一个string
                File.ReadAllLines("path", Encoding.Default);//读文件所有行,返回一个string数组,元素为每一行
                File.WriteAllText("path","text");//写,如果一开始文本不存在,则会自动创建,如果文本存在,则会覆盖
                File.WriteAllLines("path",string[]);//写(参数为数组),如果一开始文本不存在,则会自动创建,如果文本存在,则会覆盖
                //以下两个方法可以完成对磁盘上任何类型文件进行读写操作
                File.ReadAllBytes("path");//返回一个字节数组,用byte[]接住
                File.WriteAllBytes("path",byte[]);//将一个字节数组写出来
    
                //注意:file类只适合写小文件(2GB以下),因为它的读取过程时将内容整体读入,对本地内存压力比较大

    文件流技术:

                FileStream fs = new FileStream("path", FileMode.OpenOrCreate, FileAccess.Read);//创建一个字节流对象
                byte[] byetes=new byte[24*1024];//准备一个字节数组
                //调用read方法读取文件内容并存储到字节数组中(编码)
                fs.Read(byetes, 0, byetes.Length);//三个参数分别为提供的数组容器,从哪个位置开始,从哪个位置结束。返回一个int,表示结束位置
                Encoding.Default.GetString(byetes);//按照默认的编码方式来解码字节数组的内容,返回一个string

    但我们有很多情况下是不知道文件有多大的,提前准备好相应的byte数组也没什么意义。所以,此时就要靠Encoding.Default.GetString(byetes,0,num);这种形式,将其套用在while中,当num==0时结束。

    StreamReader与StreamWriter

    该类提供了一个很好的属性叫做Endofstream 可以用来判断文件是否读完。

    *所有流都是非托管,需要关闭或释放。

                using (FileStream fs = new FileStream("path", FileMode.OpenOrCreate, FileAccess.Read))
                {
                    using (StreamReader sr = new StreamReader(fs, Encoding.Default))
                    {
                        char[] c = new char[10];
                        while (!sr.EndOfStream)
                        {
                            int num = sr.Read(c, 0, c.Length);
                            string s = new string(c);
                            Console.WriteLine(s);
                        }
                    }
                }

    同理,StreamWriter:

    StreamWriter sw = new StreamWriter(fs, Encoding.Default);
    sw.Write("string");

    以此来写入内容

    
    
     




     

  • 相关阅读:
    H
    并查集
    H
    Supermarket (贪心 并查集)
    H
    M
    N-Find a way
    HDU 4035 Maze
    #386. 【UNR #3】鸽子固定器
    P4688 [Ynoi2016]掉进兔子洞
  • 原文地址:https://www.cnblogs.com/jbdxbl/p/9355329.html
Copyright © 2011-2022 走看看