File.Exists抛出System.IndexOutOfRangeException

时间:2016-04-15 03:35:49

标签: c# file

这个很奇怪。

每当尝试访问我程序的某个区域中的文件时(如果确定该文件是否存在,则嵌套在一起),它会抛出System.IndexOutOfRangeExceptionFile.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

1 个答案:

答案 0 :(得分: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();
}