2016-01-24 64 views
0

我有一个程序打开.txt文件并将其存储到数组中。如果该文件包含的内容不是每行一个数字以外的内容,则会出现错误并且程序崩溃。我想知道是否有办法防止这种情况发生,并在用户的文件无效时给用户一条消息。错误检查文件c#

public void Load_Button_Click(object sender, EventArgs e) 
    { 
     this.progressBar1.Value = 0; // Reset progress bar 
     List<int> list = new List<int>(); 

     OpenFileDialog ofd = new OpenFileDialog(); // Initialize open file dialog 
     ofd.Filter = "TXT File|*.txt"; // Set acceptable files 
     ofd.Title = "Open File"; 

     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      // Open the selected file to read. 
      string[] lines = File.ReadAllLines(ofd.FileName); // Read all lines in data file selected 
      dataArray = new int[lines.Length]; 

      for (int i = 0; i < dataArray.Length; ++i) 
      {     
         dataArray[i] = int.Parse(lines[i]); // Add data to dataArray array 
         Unsorted_Box.Text += lines[i] + ", "; // Add data to unsorted box 

      }// end for 
     } 
    } 
+0

ÿ你正在寻找一个'catch'块或'int.TryParse'。 – SLaks

回答

1

使用int.TryParse():

for (int i = 0; i < dataArray.Length; ++i)   
{     
    if (!int.TryParse(lines[i],out dataArray[i]) // Add data to dataArray array 
    { 
     // do something about the invalid data - message/ignore etc.. 
    } 
    Unsorted_Box.Text += lines[i] + ", "; // Add data to unsorted box 

}// end for 
+0

谢谢!这工作。我只是不得不休息;这样它就不会在for循环。 – Mace

+0

你知道我怎么会错误检查这一行:“var result2 = text.Split(”\ r \ n“.ToCharArray(),StringSplitOptions.RemoveEmptyEntries)?. Select(num => double.Parse(num))。 OrderBy(d => d).ToArray();“ – Mace

1

你知道我怎么会错误检查这一行:
VAR RESULT2 = text.Split( “\ r \ n”。 ToCharArray(),StringSplitOptions.RemoveEmptyEntries)?.选择(NUM => double.Parse(NUM))的OrderBy(d => d).ToArray();”

var result2 = text.Split(" \r\n".ToCharArray(), 
     StringSplitOptions.RemoveEmptyEntries)?.Select(num => 
     { 
      double result; 
      if (!double.TryParse(num, out result)) 
      { // error set result to value other than zero if you need to } 
      return result; 
     }).OrderBy(d => d).ToArray();"