我有处理文字的工具。工具有6个备忘录(memoEdit - devexpress)。但是当用户输入大文本(每个备忘录50-100k行)时,异常抛出错误内存不足
为避免此异常,我允许用户选择要处理的文件。工具将读取每行的文件并处理每一行,然后写入文件结果。
但我的问题是如何同时读取6输入文件的第1行?或第2行......行n?
请帮忙。
我的工作是处理并将所有用户输入混合到一个文件中。
工具工作正常,但在导出或写入结果文件时,抛出异常。
这就是为什么我认为我需要逐行读取输入文件和写入结果。但问题是如何同时读取4-6文件同一行。例如:读取6个文件的第1行?
答案 0 :(得分:1)
问题是你的内存不足。就这么简单。您的数据量超过了您的RAM。文件大小是多少?添加它们然后将它与PC上的内存进行比较。
请记住,c#字符串是Unicode - 每个字符16位。您的文本文件可能是每个字符8位,但在内存中总是16位。
答案 1 :(得分:1)
我遇到过类似的问题,之前我可以通过将工作分成几批来解决这个问题:
完成!
答案 2 :(得分:1)
我不确定我是否接受了你的问题,因为这听起来微不足道,但我们会看到一些令人不安的问题,看看是否有答案,如果没有 - 为什么。
所以,这是我的建议。它假设您有相同行数的文件(假设您说您合并了文件的内容)。当然,您的文件应该单独进行单独处理,但您会明白这一点。
List<System.IO.StreamReader> files = new List<System.IO.StreamReader>
{
new System.IO.StreamReader("c:\\file1.txt"),
new System.IO.StreamReader("c:\\file2.txt"),
new System.IO.StreamReader("c:\\file3.txt")
};
int lineCount = 0;
bool hasMore = true;
while(hasMore)
{
foreach(var file in files)
{
string fileLine = file.ReadLine();
hasMore = fileLine != null;
//add your processing here...
}
lineCount++;
}
file.Close();