我试图弄清楚如何在 WinRT 中逐行读取和写入一个大文本文件。
FileIO.ReadLinesAsync 分别 FileIO.WriteLinesAsync 将不起作用,因为它们使用分别返回的字符串列表。使用可能导致 OutOfMemoryException 的大型文本文件。
我当然可以使用 FileIO.AppendTextAsync 逐行编写,但这效率低下。
我发现我可以像下面的示例代码一样使用 StreamReader 或 StreamWriter。
但是真的没有原生的 Windows 运行时方法来实现这一点吗?
顺便说一句,我知道 Windows 应用商店应用程序不应该读取或写入大型文本文件。我需要一个解决方案,因为我正在为程序员写一本食谱书。
示例:使用 StreamReader 读取:
StorageFile file = ...
await Task.Run(async () =>
{
using (IRandomAccessStream winRtStream = await file.OpenAsync(FileAccessMode.Read))
{
Stream dotnetStream = winRtStream.AsStreamForRead();
using (StreamReader streamReader = new StreamReader(dotnetStream))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
...
}
}
}
});