c# - 尝试覆盖 .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]);
}
}
为什么会这样,我该如何解决?
解决方案
你差了一个 - 中的最后一个元素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
推荐阅读
- python - 如何在 django 中从数据库中删除图像
- json - 数组元素上的 sort_by 给出错误 'Cannot index string with string "key"'
- android - 如何使用 koin 在视图模型中注入 Room
- python - 在 Pandas 中转换为字符串时出现错误:“AttributeError:‘str’对象没有属性‘strftime’”
- c++ - std::bind 未绑定到库 `typedef` ed 函数
- javascript - 具有多个值的javascript select2
- ruby-on-rails - 设计令牌身份验证响应不包括手动生成的标头令牌
- raku - Raku 如何将指向 Buf 的指针传递给本地写入调用
- javascript - Bootstrap 按钮下拉菜单不会删除活动类
- arrays - 从数组中随机抓取字符串,用作占位符文本,并等同于快速回答字符串