假设我只对处理文本文件感兴趣,与StreamWriter相比,System.IO.File方法提供了什么具体的优缺点?
是否涉及任何性能因素?基本区别是什么,应在哪些情况下使用这些方法?
还有一个问题,如果我想将文件内容读入字符串并运行LINQ查询,哪个方法最好?
System.IO.File
而不是StreamReader
,因为前者大多是后者的方便包装器。请考虑File.OpenText
背后的代码:public static StreamReader OpenText(string path)
{
if (path == null)
{
throw new ArgumentNullException("path");
}
return new StreamReader(path);
}
File.ReadAllLines
:
private static string[] InternalReadAllLines(string path, Encoding encoding)
{
List<string> list = new List<string>();
using (StreamReader reader = new StreamReader(path, encoding))
{
string str;
while ((str = reader.ReadLine()) != null)
{
list.Add(str);
}
}
return list.ToArray();
}
您指的是哪种方法?
例如,WriteAllLines()
和WriteAllText()
使用StreamWriter
在幕后进行操作。以下是反射器输出:
public static void WriteAllLines(string path, string[] contents, Encoding encoding)
{
if (contents == null)
{
throw new ArgumentNullException("contents");
}
using (StreamWriter writer = new StreamWriter(path, false, encoding))
{
foreach (string str in contents)
{
writer.WriteLine(str);
}
}
}
public static void WriteAllText(string path, string contents, Encoding encoding)
{
using (StreamWriter writer = new StreamWriter(path, false, encoding))
{
writer.Write(contents);
}
}
File
方法? - Kirk Woll