我有处理文本的工具。工具有6份备忘录(memoEdit - devexpress)。但是当用户输入大文本(每个备忘录50-100 k行)时,异常会将错误抛出内存。
为了避免此异常,我允许用户选择的文件进行处理。工具将读取文件每一行和处理每一行,然后写入文件的结果。
但是我的问题是如何同时读取6输入文件的第1行呢?或者第二行..。N线?
请帮帮忙。
更新
我的工作是处理和混合所有用户输入到一个文件。
更新
工具工作良好,但当导出或写入结果文件时,引发异常。
这就是为什么我认为我需要逐行读取输入文件和写入结果。但问题是如何同时读取4-6文件一行.例句:读6档的第1行?
发布于 2013-08-21 09:28:15
问题是你的记忆快用完了。就这么简单。您的数据量超过了您的RAM。这些文件有多大?将它们加起来,然后将其与您在PC上的内存进行比较。
请记住,c#字符串是Unicode -每个字符16位。您的文本文件可能是8位每字符,但它将永远是16位的内存。
发布于 2013-08-21 10:47:16
我以前也有过一个类似的问题,我可以通过把工作分成几个部分来解决:
完成了!
发布于 2013-08-21 10:48:16
我不确定我是否理解你的问题,因为这听起来很琐碎,但是我们会通过看看是否有什么问题的答案,如果不是--为什么,来找出困扰你的问题。
这是我的建议。它假设您的文件具有相同的行数(假设您说您合并了这些文件的内容)。当然,您的文件可能应该分开单独处理,但您会有这样的想法。
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();https://stackoverflow.com/questions/18353320
复制相似问题