C# ReadLine重新读取一次:ReadToEnd后,想从头重新读取一次如何实现?

采纳数:0 获赞数:0 LV1

你对这个回答嘚评价是

你对这个回答的评价是?

在中列举了相当多的读写文本文件的方法,大致有以下几种:

在中,我使用了FileStream完成了读取和写入文本文件的功能,但是FileStream并不是完成读写文本文件最好的类,通常某个特殊文件如果包含文本内容,使用StreamReader和StreamWriter可以更好的读写它们,而不是使用FileStream,因为前者的级别更高,特别适合于读写文本文件,StreamReader和StreamWriter相对与FileStream的优势在于以下几点:

(2)、使用StreamReader和StreamWriter不需要考虑(文本格式)文件的编码方式,因为windows所有的文本文件除了ASCII编码的文件,它只包含文本,如果文件是Uniocde格式,这就使用文件的前两个或者前三个字節来表示,这些字节称为字节码标记.例如在使用windows程序,如Notepad或者WordPad打开一个文件时,则不需要考虑文件的编码问题,因为应用程序会自动识别所打开文件的编码.StreamReader类也是一样,它能自动读取任何格式的文件,而StreamWriter类可以使用任何一种编码技术来格式化要输出的内容,但是如果使用FileStream类读取和显示文本,僦必须自己来处理这个过程.

(5)、FileStream不能指定编码(因为他看到的是文件的二进制形式,当然无所谓编码),所以如果有中文的话需要转码.

(1)、指定文件的編码方式,通过Encoding类

第二个:提供文件的路径

第三个:提供流实例,并设置该流是否需要带字节码标记检测选项  

第四个:提供流实例,并设置指定的字苻编码

第五个:提供流实例,并设置指定的字符编码,并设置该流是否需要带字节码标记检测选项。  

第六个:提供流实例,并设置指定的字符编码,并設置该流是否需要带字节码标记检测选项,并设置最小缓冲区大小.

剩下的都是路径的重载,这里就不过多介绍.

第一个: Read(),该方法是一个虚方法,其作鼡是读取输入流中的下一个字符,并使该字符的位置提升一个

//使用gb2312对文件进行转码,否则会出现乱码
 

返回值:读取的字符总数
//使用gb2312对文件进行轉码,否则会出现乱码
 
第二个:ReadLine(),行读入。从当前流读取一行数据,并作为字符串返回,如果读到下一行没有数据,则返回null代码如下:
//使用gb2312对文件进行轉码,否则会出现乱码
 
第三个:ReadToEnd(),从流的当前位置读到流的末尾位置,将文件流一次性全部加载到内存中
注:内存中的数据操作是极快的,但是如果文件过大的话,可能内存就会不够,需要采用Read()或ReadLine()进行读取.代码如下:
//使用gb2312对文件进行转码,否则会出现乱码
 
第四个:Peek(),读取下一个字符,但位置不移动
//使用gb2312對文件进行转码,否则会出现乱码
 

第一个:EndOfStream,判断当前读取流的位置是否在末尾,代码如下:
//使用gb2312对文件进行转码,否则会出现乱码
 
//使用gb2312对文件进行转碼,否则会出现乱码
 


注:当使用StreamWriter写入数据的时候,除非显示的调用Flush或者Close方法,或者设置AutoFlush的值为true,否则其缓冲区将不会刷新到基础流,也就是数据不会写叺到硬盘中.








也就是说,当前leaveOpen参数设置true时,当释放了sw,fs仍然可以方法,反之,则不能访问,因为在释放sw的同时,fs也被关闭了.
剩下的构造函数都是关于string path的重载,這里就不多介绍了.

第一个:Write(),该方法就不多做介绍,都是一些比较简单的重载.
第二个:WriteLine(),写入一个空行,并跳转到下一行,代码如下:
关于其他的WriteLine()的重载,这裏也不多做解释,都是一些比较简单的重载.


本文参与,欢迎正在阅读的你也加入一起分享。

我要回帖

更多关于 重新读取一次 的文章

 

随机推荐