2012-03-24 43 views
-1

我已经创建了streamReader,但第一个'ReadLine()'读取文件中的第14行,而不是第一行,我不知道这是为什么。如何使StreamReader从文本文件的开头读取

我的代码是:

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])); 

我写了一个测试程序,它的工作,然后复制和粘贴代码(这看上去等同于我)回到我的主程序,和它的工作。感谢您的帮助

+9

'第一个'ReadLine()'读取第14行' - 不包含此代码。发布完整的(真实)代码,如果必须的话,编写一个小测试应用程序。 – 2012-03-24 15:52:11

+0

你确定你正在阅读正确的文件吗?尝试阅读完整路径的文件。 – Mehran 2012-03-24 15:53:09

+0

你也应该使用'使用(StreamReader reader = new StreamReader(“argus-BIG.txt”)){...}' – 2012-03-24 15:56:56

回答

6

这应该是有效的,我猜测沿途还有其他事情发生。一旦你打开了一个阅读器,它就会向下移动,如果你想让阅读器从上面读取,必须重置。也许你的引用在其他地方保持打开(但假设发布的代码发生了某些未发布的内容),或者在这段代码之前使用?

但是,您可以随时force the position to the top来验证此理论。如果在此代码之后,你仍然在第14行,那么它可能是文件本身?

reader.DiscardBufferedData(); 
reader.BaseStream.Seek(0, SeekOrigin.Begin); 
reader.BaseStream.Position = 0; 
+2

OP在第一行创建一个新流。 – 2012-03-24 15:58:20

+0

我写了一个测试应用程序,它工作,然后复制并粘贴代码(这看起来和我一样)回到我的主程序,它的工作。谢谢你的帮助。 – Alex 2012-03-24 17:12:05

+0

谢谢!这救了我! – 2017-07-07 13:35:49

相关问题