将文本文件读入字符串变量的最快方法是什么?
我理解它可以通过几种方式完成,比如读取单个字节,然后将它们转换为字符串。我在寻找一种编码最少的方法。
将文本文件读入字符串变量的最快方法是什么?
我理解它可以通过几种方式完成,比如读取单个字节,然后将它们转换为字符串。我在寻找一种编码最少的方法。
当前回答
@Cris抱歉,这是微软的MSDN
方法
在这个实验中,将对两个班级进行比较。StreamReader和FileStream类将被指示从应用程序目录中读取两个10K和200K的完整文件。
StreamReader (VB.NET)
sr = New StreamReader(strFileName)
Do
line = sr.ReadLine()
Loop Until line Is Nothing
sr.Close()
FileStream (VB.NET)
Dim fs As FileStream
Dim temp As UTF8Encoding = New UTF8Encoding(True)
Dim b(1024) As Byte
fs = File.OpenRead(strFileName)
Do While fs.Read(b, 0, b.Length) > 0
temp.GetString(b, 0, b.Length)
Loop
fs.Close()
结果
在这个测试中,FileStream明显更快。StreamReader读取小文件需要额外50%的时间。对于大文件,它需要额外的27%的时间。
StreamReader是专门寻找换行符,而FileStream没有。这将占用一些额外的时间。
建议
根据应用程序需要对某段数据做什么,可能会有额外的解析,这将需要额外的处理时间。考虑这样一个场景,其中文件有数据列,行是CR/LF分隔的。StreamReader将沿着文本行查找CR/LF,然后应用程序将执行额外的解析以查找数据的特定位置。(你认为弦。子字符串没有价格?)
另一方面,FileStream以块的形式读取数据,积极主动的开发人员可以编写更多的逻辑来使用流。如果需要的数据位于文件中的特定位置,这当然是一种方法,因为它可以降低内存使用量。
FileStream在速度上是更好的机制,但需要更多的逻辑。
其他回答
System.IO.StreamReader myFile =
new System.IO.StreamReader("c:\\test.txt");
string myString = myFile.ReadToEnd();
如果你想从应用程序的Bin文件夹中选择文件,那么你可以尝试以下操作,不要忘记做异常处理。
string content = File.ReadAllText(Path.Combine(System.IO.Directory.GetCurrentDirectory(), @"FilesFolder\Sample.txt"));
我强烈建议使用File. readlines(路径)相比StreamReader或任何其他文件读取方法。请在下面找到小文件和大文件的详细性能基准。 我希望这能有所帮助。
文件操作读取结果:
对于小文件(只有8行)
对于较大的文件(128465行)
readline的例子:
public void ReadFileUsingReadLines()
{
var contents = File.ReadLines(path);
}
注意:基准测试是在。net 6中完成的。
string contents = System.IO.File.ReadAllText(path)
这是MSDN文档
string text = File.ReadAllText("Path");一个字符串变量中包含了所有文本。如果你需要每一行单独,你可以使用这个:
string[] lines = File.ReadAllLines("Path");