C# 中File和FileStream的用法
原文:https://blog.csdn.net/qq_41209575/article/details/89178020
1.首先先介绍File类和FileStream文件流
1.1 File类,是一个静态类,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件。File类方法的参量很多时候都是路径path。主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。
1.2 FileStream文件流 只能处理原始字节(raw byte)。FileStream 类可以用于任何数据文件,而不仅仅是文本文件。FileStream 对象可以用于读取诸如图像和声音的文件,FileStream读取出来的是字节数组,然后通过编码转换将字节数组转换成字符串。
1.2 FileStream文件流 只能处理原始字节(raw byte)。FileStream 类可以用于任何数据文件,而不仅仅是文本文件。FileStream 对象可以用于读取诸如图像和声音的文件,FileStream读取出来的是字节数组,然后通过编码转换将字节数组转换成字符串。
1.3 区别:file:是一个文件的类,对文件进行操作的;filestream:文件流.对txt,xml等文件写入内容的时候需要使用的一个工具.打个形象的比喻.file是笔记本,需要filestream的这个笔才能写.
2.代码部分
File类常用方法
![](https://img2018.cnblogs.com/blog/1671415/201910/1671415-20191029201845382-772557883.png)
3.文件流
3.1文件流文字形式读取
byte[] bytsize = new byte[1024 * 1024 * 5]; using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate,FileAccess.ReadWrite)) { while (true) { int r = stream.Read(bytsize, 0, bytsize.Length); //如果读取到的字节数为0,说明已到达文件结尾,则退出while循 if (r == 0) { break; } string str = Encoding.Default.GetString(bytsize, 0, r); Console.WriteLine(str); } }
3.2文件流文字形式写入
string str = "今天天气好晴朗,处处好风光"; byte[] buttf = Encoding.Default.GetBytes(str); //文件流的写入 using (FileStream fscreat = new FileStream(path, FileMode.Append, FileAccess.Write)) { fscreat.Write(buttf, 0, buttf.Length); }
3.3文件流视频形式复制
byte[] bytsize = new byte[1024 * 1024 * 5]; string videoPath = @"C:\Users\Administrator\Desktop\1、练习1-3.avi"; string videoNewPath = @"C:\Users\Administrator\Desktop\1.avi"; //创建读取流 using (FileStream fsread=new FileStream(videoPath,FileMode.Open,FileAccess.Read)) { //创建写入流 using (FileStream fswrite=new FileStream(videoNewPath,FileMode.OpenOrCreate,FileAccess.Write)) { while (true) { //返回实际读取到的字节 int r = fsread.Read(bytsize, 0, bytsize.Length); //当字节位0的时候 证明已经读取结束 if(r==0){ break; } fswrite.Write(bytsize,0,r); } } }
4.记事本的写入读取
4.1读取
//text中有回车换行的。 string text = System.IO.File.ReadAllText("E:/123.txt"); //lines字符串数组就是按行分割后的。 string[] lines = System.IO.File.ReadAllLines("E:/123.txt"); FileStream stream = new FileStream(@"E:\\123.txt", FileMode.Open); StreamReader reader = new StreamReader(stream); var b = reader.ReadLine(); //一次性读取一行 var a = reader.ReadToEnd(); //一次性读取全部数据 reader.Close(); stream.Close(); StreamReader reader2 = new StreamReader(@"E:\\123.txt"); var a2 = reader2.ReadToEnd(); reader2.Close();