2012-03-24 41 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

相關問題