起初我用a StreamReader来读取文件中的文本:
StreamReader reader = new StreamReader(dialog.OpenFile());
txtEditor.Text = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)
但发现File.ReadAllText哪个似乎将我的代码简化为1行.两者之间有什么不同吗?我什么时候应该使用另一个?
txtEditor.Text = File.ReadAllText(dialog.FileName);
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 52
如果您使用该ReadToEnd()方法,则没有区别.不同之处在于,如果您使用ReadLine()大文件的方法,因为您没有将整个文件加载到内存中,而是允许您以块的形式处理它.
因此,使用File.ReadAllText()而不是ReadToEnd()因为它使您的代码更短,更易读.它还负责妥善处理资源,因为您可能会忘记使用StreamReader(就像您在代码片段中所做的那样).
tom*_*med 22
查看mscorlib中的代码,File.ReadAllText实际上在内部调用StreamReader.ReadToEnd!
[SecurityCritical]
private static string InternalReadAllText(string path, Encoding encoding, bool checkHost)
{
string result;
using (StreamReader streamReader = new StreamReader(path, encoding, true, StreamReader.DefaultBufferSize, checkHost))
{
result = streamReader.ReadToEnd();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ich 19
如果使用ReadToEnd,它们是相同的.否则,使用StreamReader允许您一次读取字节,使用它们进行一些计算,然后根据需要将它们丢弃.例如,如果您有一个包含2,000个数字列表的文件,并且您想将它们一起添加,则可以:
File.ReadAllText将所有内容读入字符串,然后解析该字符串以计算总和.StreamReader并一次读取几个字节,随时计算总和.这两种方法的主要区别在于瞬态内存使用.获得总和后,您可以随时丢弃所有中间数据.在该File.ReadAllText方法中,在某些时候,您将整个文件内容放在内存中,而使用该StreamReader方法,您在任何时候只在内存中有几个字节的文件内容.这可能是一个问题,具体取决于文件的大小和您正在进行的计算类型.
File.ReadAllText方便快捷. StreamReader是强大但更多的工作.
| 归档时间: |
|
| 查看次数: |
31342 次 |
| 最近记录: |