如何正确理解system.io中的类
来源:百度知道 编辑:UC知道 时间:2024/07/08 14:11:53
拒绝复制粘贴~~谢谢
那,就拿你举得这几个类说吧
你要知道StringReader,StreamReader,TextReader是一个什么关系,TextReader是一个抽象类,他表示的意义是一个文本的读取器(相同的有TextWriter),什么叫文本的读取器,就是说他从底层(也许是流)读取string出来,主要的是ReadLine方法。那么针对不同的底层有不同的读取器,其中StreamReader是从一个流来获取数据的,而StringReader和Stream没关系了,直接从一个字符串string读取,想一个包装器一样把一个string伪装成一个TextReader。
然后是流,刚刚说了StreamReader是从流来的,那么必定有各种各样的流类型,其中FileStream是最常见的一种流了,从一个文件中获取一个流对象。那么还有很多别的类型的,比如MemoryStream,他是把内存的一部分当作一个流来处理,还有NetworkStream,代表一个网络流,比如你请求一个网站的时候就会用到它,CryptoStream是一种加密解密用的流,而GZipStream是压缩用的。其实StreamReader不需要关心底层是什么流,只需要知道他是一个Stream就行了
至于File类,算是一个快速完成任务所提供的快捷方式,比如如果从一个文件中读取所有的文本,那么你需要一个FileStream,一个StreamReader,然后还要释放他,很麻烦,那么使用File类的ReadAllText可以一句话完成任务。
通常来说看你需要使用高级功能多还是简单完成任务多,比如你需要从一个文件中解压数据流同时解密同时读取文本,那么File类根本无法提供这样的功能,你需要自己写各种流包装在一起,那么如果仅仅是需要读取所有数据的话,那么File.ReadAllText是再好不过了,一方面可以让你的代码简洁,可读性好,另一方面也让你出错的几率降低,减少bug