【发布时间】:2016-05-07 01:44:49
【问题描述】:
我有一个文本文件,我使用 WriteLineAsync 方法每 30 分钟保存一行。当文件变得太大时,如果我尝试读取它,应用程序就会崩溃。我认为我可以限制文件上可写的行,所以当我添加新行时,最旧的行将被删除。 我该怎么做?
编辑: 我使用以下代码阅读了该文件:
StorageFile MyFile = await ApplicationData.Current.LocalFolder.GetFileAsync("LogFile.txt");
string nextLine;
using (StreamReader reader = new StreamReader(await MyFile.OpenStreamForReadAsync()))
{
while ((nextLine = await reader.ReadLineAsync()) != null)
{
TextLog.Text += nextLine + "\n";
}
}
我已经尝试调试它并且我没有从阅读代码中得到任何异常。也许问题是我试图将所有文本放在一个文本块中。
【问题讨论】:
-
你必须重写整个文件。所以我只会偶尔这样做。但是,如果应用程序崩溃了,为什么还要阅读整个文件呢?你可以简单地少读一点。
-
或者你可以修复崩溃的代码。 “文件变得太大”是什么意思?是否超过 2GB?有例外吗?它发生在哪里?代码在哪里?无论文件大小如何,简单地调用
WriteLineAsync都不会失败。 -
或许可以考虑使用多个较小的文件
-
PS,听起来你几乎是在尝试登录。与其重新发明轮子,不如使用许多日志库之一,如 log4net、NLog 和滚动文件选项
标签: c# uwp windows-10-mobile visual-studio-2015