我知道此崩溃在某些情况下已经解决,但在您将其称为副本之前,请阅读:
现在我将解释会发生什么。
string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
StreamReader sr = new StreamReader(spath);
string text = sr.ReadToEnd();
sr.Close();
共有2个文件:zPosting_0.post(17MB)和zPosting_2.post(2MB)
当我阅读zPosting_2.post并解析它时,效果很好。 当我阅读zPosting_0.post时,当我尝试解析文本时它会崩溃。
这是消息:
我不知道导致问题的原因,但我猜这是缓冲区大小的限制。
我在Windows7 32Bit上使用VS2012。
如何在不拆分文件的情况下防止此崩溃?而不是逐行阅读?
提前致谢。
修改 这是第一个解析器行:
string sTerm = "";
List<int> index = new List<int>();
List<int> docs = new List<int>();
int iTF = 0;
int iDF = 0;
int i1, i2;
i1 = 0;
i2 = text.IndexOf("_");
sTerm = text.Substring(0, i2);
它有时在“int i1,i2;”崩溃,有时在“i1 = 0”崩溃。
答案 0 :(得分:0)
可能有点晚了,但对于遇到这个问题的其他人来说......
string text = sr.ReadToEnd();
最有可能导致崩溃。也许是一个腐败的档案?无论如何,您可以尝试下面的代码并循环以将字符串添加到字符串中。
string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
string text = string.Empty;
using (var sr = new StreamReader(spath))
{
while (!sr.EndOfStream)
{
text += sr.ReadLine();
}
}
或者,如果.EndOfStream
也导致问题,您可以尝试..
string spath = Directory.GetCurrentDirectory() + @"\" + "zPosting_" + 0.ToString() + ".post";
string line, text = string.Empty;
using (var sr = new StreamReader(spath))
{
while ((line = sr.ReadLine()) != null)
{
text += line;
}
}
希望这有帮助。