我创建了一个streamReader,但第一个'ReadLine()'读取文件中的第14行,而不是第一行,我不知道为什么会这样。
我的代码是:
StreamReader reader = new StreamReader("argus-BIG.txt");
//create array to hold data values
string[] branchData = new string[11];
//get 11 lines of branch data file and store in an array
for (int i = 0; i < 11; i++)
{
branchData[i] = reader.ReadLine();
}
//new instance of Branch Class
Branch tempBranch = new Branch();
//set branch values from branchData array
tempBranch.setBranchID(branchData[0]);
tempBranch.setBranchNickname(branchData[1]);
tempBranch.setBranchAddressNo(branchData[2]);
tempBranch.setBranchAddressStreet(branchData[3]);
tempBranch.setBranchAddressCity(branchData[4]);
tempBranch.setBranchAddressCountry(branchData[5]);
tempBranch.setBranchAddressPostCode(branchData[6]);
tempBranch.setNearestBranch1(branchData[7]);
tempBranch.setNearestBranch2(branchData[8]);
tempBranch.setNearestBranch3(branchData[9]);
tempBranch.setNoCategories(Convert.ToInt32(branchData[10]));
我写了一个测试应用程序,它可以工作,然后复制并粘贴代码(看起来与我相同)回到我的主程序中,并且它有效。谢谢你的帮助
答案 0 :(得分:6)
这应该有效,我猜测在此过程中还会发生其他事情。一旦你打开一个阅读器,它会向下移动,如果你想让它从顶部读回来,必须重置它。也许您的引用在其他地方保持开放(但假设发布的代码发生了一些未发布的事情),或者在这段代码之前使用过?
但是,您始终可以force the position to the top来验证此理论。如果在这段代码之后,你仍然在第14行,那么它可能是文件本身的某种程度?
reader.DiscardBufferedData();
reader.BaseStream.Seek(0, SeekOrigin.Begin);
reader.BaseStream.Position = 0;