Страница: 1 |
Страница: 1 |
Вопрос: StreamReader yнепавильно считывает поток. Почему?
Добавлено: 24.09.06 09:19
Автор вопроса: dr.Faust
Вот такой код считывает поток в массив:
Dim sr As System.IO.StreamReader = New System.IO.StreamReader("C:\p") ' файл с таблицей
Dim fl As New System.IO.FileInfo("C:\p")
Dim len, i As Int64
len = fl.Length()
ReDim p(len - 1)
For i = 0 To len - 1
p(i) = sr.Read
If i / 10000 = Int(i / 10000) Then
ProgressBar1.Value = i
End If
Next
С адреса 740A50 ридер возвращает -1 (на самом деле там 12h).
В чем собственно дело?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 24.09.06 14:32
Может правильней будет использовать BinaryReader?
Или даже FileStream.
Кстати, по одному байту читать - это будет жутко медленно.
Номер ответа: 2
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #2
Добавлено: 25.09.06 11:21
Вообще время позволяет.
А как быстро?
И всеже почему перестает читать?
Номер ответа: 3
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #3
Добавлено: 26.09.06 02:57
Так файл текстовый?
Непонятно.
StreamReader работает с текстовыми файлами.
-1 - значит что файл закончился.
А это скорее всего из -за того, что до этого ( 740A50 ) он наткнулся на нуль символ.
Номер ответа: 4
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #4
Добавлено: 26.09.06 09:29
Я знаю, когда ридер возвращает -1, вопрос почему он это делает?
Он же должен читать массив побайтно (или всетаки посимвольно - тогда понятно все)?
А как побайтно прочитать?
Файл - байтовый массив.
Номер ответа: 5
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #5
Добавлено: 26.09.06 10:18
Правильней действительно BinaryReader.
Плохо жить без MSDN'а
Спасибо.
И еще вопрос:
Что быстрее:
или
Номер ответа: 6
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #6
Добавлено: 26.09.06 10:43
А проверить то не судьба?
Естественно второй вариант будет в разы быстрее. Почему, догадайся сам.
Номер ответа: 7
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #7
Добавлено: 27.09.06 12:03
Спасибо, я так и думал.
Еще один детский вопрос:
Что лучше, импортировать класс или каждый раз ссылатся на него?
В чем собственно разница?
Номер ответа: 8
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #8
Добавлено: 28.09.06 10:55
а что есть импортировать класс в твоем понимании?
Номер ответа: 9
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #9
Добавлено: 30.09.06 09:22
Признаться, с трудом представляю, что это.
Вопрос сводиться к бональному:
Чем отличается
Imports System.io
...
Dim fsr As FileStream = New FileStream(TextBox_путь.Text, IO.FileMode.Open)
Dim br As BinaryReader = New BinaryReader(fsr)
и
Dim fsr As System.IO.FileStream = New System.IO.FileStream(TextBox_путь.Text, IO.FileMode.Open) ' поток как файл
Dim br As System.IO.BinaryReader = New System.IO.BinaryReader(fsr)
Номер ответа: 10
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #10
Добавлено: 01.10.06 15:52
отличия только в записи - препроцессор приведёт это к одному виду.
Номер ответа: 11
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #11
Добавлено: 02.10.06 08:54
Спасибо.