Как заставить StreamReader читать с начала текстового файла - PullRequest
0 голосов
/ 24 марта 2012

Я создал 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]));

Я написал тестовое приложение, которое работало, затем скопировал и вставил код (который выглядел идентично мне) обратно в мою основную программу, и это сработало.Спасибо за вашу помощь

1 Ответ

6 голосов
/ 24 марта 2012

Это должно сработать, и я предполагаю, что по пути происходит что-то еще. Как только вы открываете считыватель, он перемещается вниз и должен быть сброшен, если вы хотите, чтобы он снова читал сверху. Может быть, ваша ссылка была оставлена ​​открытой в другом месте (но это предполагает, что в опубликованном коде есть что-то, что не было опубликовано), или использовалась до этого фрагмента кода?

Однако вы всегда можете принудительно установить положение на вершину , чтобы проверить эту теорию. Если после этого кода вы все еще находитесь на 14-й строке, то это может быть как-то сам файл?

reader.DiscardBufferedData(); 
reader.BaseStream.Seek(0, SeekOrigin.Begin); 
reader.BaseStream.Position = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...