Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Поточное чтение данных из файла


Автор: Anttt 4.10.2007, 21:13
уважаемые коллеги-программисты. я прошу у Вас помощи в решении следующей задачи:
В текстовом файле дан набор данных следующего вида:

djfkri583ht93jt5oeh57sngit02tf,cyrgebvr74gfbvjdl
fkdrktj3bk4tj34k3jb4fh3fk4jfvbkfh34hf3v4kfhv4k34
f3kj4fb3k4hbf3kh4v3i4hvfjh3bvfjh34vfj4hvfjh34fvj
4fb3k4hfb34hfvj34hfvjhfvj34hfvj34hfv3jh4fvj3hhhh

Необходимо считывать данные посимвольно. в начале первые 5 (к примеру) символов, фиксировать их и выводить в поле таблицы
базы данных sql. После следующие 8 символов, фиксировать их и выводить в следующее поле таблицы и так далее.
Я никогда не сталкивался с потоковым чтением в C#, поэтому мне был бы интересен (и крайне полезен) сам код.

На самом деле надор данных колосального размера. 
считываются блоки данных этого набора и записываются в поля класса (string и int - при конвертации из string), 
после чего из этих полей данные по sql запросу должны записываться в таблицу по опрделенному полю. 
Мне необходимо посмотреть механизм чтения блоков данных РАЗНОЙ длинны из этого набора, запись в поле класса и 
дальнейшую запись из этого поля в таблицу. Буду очень рад и признателен любой помощи!

Автор: Experimenter 5.10.2007, 11:08
"А здесь смотрели?" внизу страницы видел?
http://forum.vingrad.ru/topic-40489.html
Код

char[] pieceOfData = new char[5];
FileStream fs = new FileStream("myfile.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs);
int streamPos = sr.ReadBlock(pieceOfData, 0, 5); //считывает первые 5 байт, возвращает кол-во считанных байт
classStringField = new string(pieceOfData); //где classStringField - поле string твоего класса
sr.Close();

поправьте меня, если что, т.к. писал по памяти.

Автор: mr.DUDA 5.10.2007, 17:05
В общем, если файл текстовый - пойдёт и StreamReader; для бинарных данных нужен BinaryReader; в крайнем случае можно поюзать FileStream напрямую.

Автор: Anttt 6.10.2007, 10:00
спасибо! попробую сегодня)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)