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");

浙公网安备 33010602011771号