C#如何读取文件内容?(FileStream与StreamReader区别)

 在C#中读取文件内容,有两个类可以做到,一个是StreamReader类,一个是FileStream类。那么究竟如何实现?以及他们两个有什么区别?在今后应用中应该使用哪一个?别着急,我一个个来说!


目录

1.开门见山谈区别

2.FileStream

3.StreamReader

4.注意事项

4.1.及时释放

 4.2.异步操作

4.3汉字乱码

5.总结:

6.参考文献:


1.开门见山谈区别

FileStream类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而StreamReader类操作的是字符数据。因此FileStream类既可以对文本文件进行读写也可以对多媒体文件进行读写,多用于对大文件进行读写,且它对文件可进行分步读写,减小内存压力。而StreamReader和StreamWriter类多用于对小文件读写。

FileStream操作字节,更适合大文件。

StreamReader操作字符,更适合小文件。

2.FileStream

 用FileStream操作文件的方法代码如下:

using System;
using System.IO;
using System.Text;class Test
{public static void Main(){string path = @"c:\temp\MyTest.txt";//如果文件存在就删除if (File.Exists(path)){File.Delete(path);}//创建新文件using (FileStream fs = File.Create(path)){AddText(fs, "This is some text");AddText(fs, "This is some more text,");AddText(fs, "\r\nand this is on a new line");AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");for (int i=1;i < 120;i++){AddText(fs, Convert.ToChar(i).ToString());}}//读取文件内容using (FileStream fs = File.OpenRead(path)){byte[] b = new byte[1024];UTF8Encoding temp = new UTF8Encoding(true);while (fs.Read(b,0,b.Length) > 0){Console.WriteLine(temp.GetString(b));}}}//添加文本内容的方法private static void AddText(FileStream fs, string value){byte[] info = new UTF8Encoding(true).GetBytes(value);fs.Write(info, 0, info.Length);}
}

3.StreamReader

 用StreamReader操作文件的方法代码如下:

using System;
using System.IO;class Test
{public static void Main(){try{// 读取文本文件using (StreamReader sr = new StreamReader("TestFile.txt")){string line;// ReadLine()一行一行的循环读取//当然可以直接ReadToEnd()读到最后while ((line = sr.ReadLine()) != null){Console.WriteLine(line);}}}catch (Exception e){Console.WriteLine(e.Message);}}
}

4.注意事项

4.1.及时释放

这两种类型使用完毕后都需要对其进行释放!具体说明看下图:

 4.2.异步操作

如果读取的文件内容过大,时间过长,导致界面卡死,那么可以采用两个办法:

①开线程

②利用异步

具体请看文末参考文献。

4.3汉字乱码

编码:gb2312可以保证汉字不出现乱码:

请看我的使用:

(StreamReader)

(FileStream)

 

5.总结:

我们正常操作文件的时候,比如office文件或者txt文本文件,那么使用相对简便的StreamReader就足够了。如果读取音视频文件,那么就要考虑FileStream了!

6.参考文献:

FileStream 类 (System.IO) | Microsoft Docs

StreamReader 类 (System.IO) | Microsoft Docs

https://blog.csdn.net/Hellen0708/article/details/86234801


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部