Visual Studio 2012在读取文件时崩溃

时间:2013-12-17 12:16:30

标签: c# visual-studio visual-studio-2012

我知道此崩溃在某些情况下已经解决,但在您将其称为副本之前,请阅读:

  • 我尝试重新安装VS2012 Framework。
  • 我试图删除导致此次崩溃的注册表值。
  • 我尝试重新安装VS2012。
  • 我试图禁用IntelliTrace。

现在我将解释会发生什么。

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时,当我尝试解析文本时它会崩溃。

这是消息: enter image description here

我不知道导致问题的原因,但我猜这是缓冲区大小的限制。

我在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”崩溃。

1 个答案:

答案 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; 
      }
 }

希望这有帮助。