2016-04-15 1 views
0

をスローします。 (ファイルが存在するかどうかを判断する場合に入れ子になった)私のプログラムの特定の領域内のファイルにアクセスしようとするたびにFile.Existsはこの1が奇数であるSystem.IndexOutOfRangeException

、それはSystem.IndexOutOfRangeExceptionをスローします。 File.Existsはそれを投げ捨てるつもりはありません!ここに私のスクリプトです。

if (Directory.Exists("SA_Data") && File.Exists("SA_Data/stock_names.txt")) 
{ 
    Array.Clear(Globals.stocks, 0, Globals.stocks.Length); 
    Globals.stocks[1] = "empty"; 

    // ********************************************** 
    // This should return true. It raises an exception 
    bool whatever = File.Exists("SA_Data/stock_names.txt"); 
    // ********************************************** 

    // I get the same exception in File.ReadAllLines, below 
    foreach (string stock in File.ReadAllLines("SA_Data/stock_names.txt")) 
    { 
     MessageBox.Show(stock); 
     if(Globals.stocks[1] != "empty") 
     { 
      Array.Resize(ref Globals.stocks, Globals.stocks.Length); 
      Globals.stocks[Globals.stocks.Length - 1] = stock; 
     } 
     else 
     { 
      Globals.stocks[0] = stock; 
     } 
    } 
} 

ファイルが存在し、空ではなく、開いておらず、開く権限があります。どうしたの?

おかげで、 -Dylan

+0

ここでエラーがスローされますか? – Ian

+1

ファイルはどこにありますか?パスはcorrect.For 1は、完全修飾path.File.Exists(@「C:\ SA_data \ stock_names.txt」)を使用していないようです。また、あなたはスラッシュ使用していますか?パスが無効な文字を(そのパスが問題になることはできません)が含まれている場合、私はindexOutOfRangeExceptionを作成することができます任意の理由を参照してくださいいけない –

+1

は、それはfalseを返します。 @AlgoRythm配列 "Globals.stocks [1]" –

答えて

0

は、配列のサイズ変更はちょうどあなたが一般的にやるべき事のようなものではありません。だからここに私が提案するものがあります:

if (Directory.Exists("SA_Data") && File.Exists("SA_Data/stock_names.txt")) 
{ 
    var stocks = new List<string>(); 

    foreach (string stock in File.ReadAllLines("SA_Data/stock_names.txt")) 
    { 
     MessageBox.Show(stock); 
     stocks.Add(stock); 
    } 
    Global.stocks = stocks.ToArray(); 
} 
+0

それは素晴らしいです、ありがとうございます:) – AlgoRythm

関連する問題