首页 > 解决方案 > 尝试覆盖 .txt 文件 c# 时出现奇怪的 System.IndexOutOfRangeException

问题描述

我想在 .txt 文件中扩展数据集合。

我正在将 .txt 文件读入字符串数组。然后我正在制作一个包含 5 个以上元素的新字符串数组。

string oldarray[] = File.ReadAllLines(targetfile);   //it is correctly reading the file
string newarray[] = new string[oldarray.Count()+5];

for (int i = 0; i < oldarray.Count(); i++) {         //copy old array into new bigger one
    newarray[i] = oldarray[i];
}
newarray[oldarray.Count() + 1] = "Data1";  //fill new space with data
newarray[oldarray.Count() + 2] = "Data2";
newarray[oldarray.Count() + 3] = "Data3";
newarray[oldarray.Count() + 4] = "Data4";
newarray[oldarray.Count() + 5] = " ";     //spacer

//now write new array into same textfile over old data
File.WriteAllLines(targetfile, newarray);  //System.IndexOutOfRangeException

我也尝试像这样逐行写入文件,但它确实吐出了相同的异常:

using (StreamWriter writer = new StreamWriter(destinationFile)) //System.IndexOutOfRangeException 
{
    for (int i = 0; i < newarray.Length; i++)
    {
        writer.WriteLine(newarray[i]);
    }
}

为什么会这样,我该如何解决?

标签: c#arraysindexoutofrangeexception

解决方案


你差了一个 - 中的最后一个元素olaArray是 at oldarray.Count() - 1,而不是oldarray.Count()

for (int i = 0; i < oldarray.Count(); i++){         //copy old array into new bigger one
    newarray[i] = oldarray[i];
}
newarray[oldarray.Count()]     = "Data1";  //fill new space with data
newarray[oldarray.Count() + 1] = "Data2";
newarray[oldarray.Count() + 2] = "Data3";
newarray[oldarray.Count() + 3] = "Data4";
newarray[oldarray.Count() + 4] = " ";     //spacer

推荐阅读