c#对文件进行操作

一、File类

文件的一次性读取,给内存造成很大的压力,所以一般处理比较小的文件;

File是一个静态类,直接进行方法的调用就可以

1.文件的创建 Creat();

File.Create(@"C:\Users\Flora\Desktop\练习.txt");
            Console.WriteLine("ok");

2.文件的写入

1)WriteAllBytes()

文件在写入的时候,需要将字符串转化成字符数组

//没有这个文件的话,会创建一个文件
            string str = "今天天气好晴朗,处处好风光";
            //需要将字符串转化成字节数组
            byte[] buffer = Encoding.Default.GetBytes(str);
            File.WriteAllBytes(@"C:\Users\Flora\Desktop\new.txt",buffer);
            Console.WriteLine("文件写入完成");

文件中呈现的格式为:

今天天气好晴朗,处处好风光

2)WriteAllLines()

这里文件是按行输入,在文件中呈现的是,字符串数组中的一个元素,占一行;

File.WriteAllLines(@"C:\Users\Flora\Desktop\new.txt",new string[] { "今天是下雨天", "天气格外的冷" });
            Console.WriteLine("文件写入完成WriteAllLines");

文件中的呈现格式为:

今天是下雨天

天气格外的冷

3)WriteAllText()

File.WriteAllText(@"C:\Users\Flora\Desktop\new.txt","爱太短,回忆却太长。");
            Console.WriteLine("文件写入完成WriteAllText");

文件中的呈现格式:

爱太短,回忆却太长。

4)追加AppendAllText()

上述写入的方法都是将文件的内容进行覆盖,可以用AppendAllText()进行追加

File.AppendAllText(@"C:\Users\Flora\Desktop\练习.txt","看我有没有把你覆盖掉");
           Console.WriteLine("ok");

 

3.文件的读取

1)ReadAllBytes()

注意要将字节数组中的每个元素按照指定的编码格式转换成字符串

byte []buffer1 = File.ReadAllBytes(@"C:\Users\Flora\Desktop\new.txt");
            string s = Encoding.GetEncoding("UTF-8").GetString(buffer1);
            Console.WriteLine(s);

 

2)ReadAllLines()

string []str= File.ReadAllLines(@"C:\Users\Flora\Desktop\new.txt",Encoding.UTF8);
            foreach (var item in str)
            {
                Console.WriteLine(item);
            }

 

3)ReadAllText()

string str=File.ReadAllText(@"C:\Users\Flora\Desktop\new.txt", Encoding.UTF8);
            Console.WriteLine(str);

4.文件复制

Copy().两个参数是:原来文件的地址与复制之后文件的地址

File.Copy(@"C:\Users\Flora\Desktop\new.txt", @"C:\Users\Flora\Desktop\new1.txt");
            Console.WriteLine("文件复制成功");

5.文件的剪切

File.Move(@"E:\finally\qqchat\new.txt", @"E: \unity3D\new.txt");
      Console.WriteLine("剪切成功");

6.文件的删除 

File.Delete(@"E:\finally\qqchat\text.txt");
          Console.WriteLine("删除成功");

 

二、FileStream

文件流,比较温和的读取方式,按照字节来进行操作的,可以处理任何文件,因为任何文件都是由字节组成的;

FileStream是一个动态类,在使用时,需要创建对象来进行操作

1.读取文件

FileStream fsRead = new FileStream(@"C:\Users\Flora\Desktop\new.txt",FileMode.OpenOrCreate,FileAccess.Read);
            byte[] buffer = new byte[1024 * 1024 * 5];
            //返回本次中所读取到的数据
            int r = fsRead.Read(buffer, 0, buffer.Length);
            //将字符数组中的元素按照指定的编码格式转化成字符串
            string s = Encoding.UTF8.GetString(buffer, 0, r);
            Console.WriteLine(s);
            //关闭流
            fsRead.Close();
            //释放流
            fsRead.Dispose();
            Console.ReadKey();

2.写文件

将创建文件流的对象的过程写在using中,可以自动释放所占用的资源

//将创建文件流对象的过程写在using中,可以自动释放流所占用的资源
            using (FileStream fsWrite=new FileStream(@"C:\Users\Flora\Desktop\new.txt",FileMode.OpenOrCreate,FileAccess.Write))
            {
                string str = "看我有没有将你覆盖掉";
                byte[] buffer = Encoding.UTF8.GetBytes(str);
                fsWrite.Write(buffer, 0, buffer.Length);
            }
            Console.WriteLine("ok");

 

三、StreamWriter与StreamReader

动态类,使用时,需要创建对象来进行使用

操作字符的,只能处理文本文件

1.读取数据

using (StreamReader sr = new StreamReader(@"C:\Users\Flora\Desktop\new.txt",Encoding.UTF8))
            {
                while (!sr.EndOfStream)
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }

2.写入数据

将内容进行全部覆盖

            using (StreamWriter sw = new StreamWriter(@"C:\Users\Flora\Desktop\new.txt"))
            {
                sw.Write("看我有没有将你覆盖掉");
            }
            Console.WriteLine("ok");

 

posted @ 2021-12-10 14:23  无敌小金刚  阅读(442)  评论(0)    收藏  举报