|
|
|
VB.NET побайтовое чтение из файла
|
|||
|---|---|---|---|
|
#18+
Здравствуйте форумчане. необходимо произвести побайтовое чтение из файла, бинарного, текстового - не суть важно. проблема с установкой положения чтения. вот код Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В итоге seek как будто не работает. считывается n-ое количество раз 1 символ файла.( помогите исправить ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 17:30:56 |
|
||
|
VB.NET побайтовое чтение из файла
|
|||
|---|---|---|---|
|
#18+
surbanec, здесь не нужно побайтовое чтение. Весь код заменяется одной строкой: Код: vbnet 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 18:41:55 |
|
||
|
VB.NET побайтовое чтение из файла
|
|||
|---|---|---|---|
|
#18+
surbanec, surbanecЗдравствуйте форумчане. необходимо произвести побайтовое чтение из файла, бинарного, текстового - не суть важно. проблема с установкой положения чтения. вот код Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В итоге seek как будто не работает. считывается n-ое количество раз 1 символ файла.( помогите исправить ошибку откуда вообще выдран этот код? Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 18:53:57 |
|
||
|
VB.NET побайтовое чтение из файла
|
|||
|---|---|---|---|
|
#18+
сам сфорганил код. ну уже разобрался с установкой положения чтения. просто иногда необходимо считать данные из большого файла от 10мб и выше. для этого я и хочу сделать побайтовую загрузку, либо загрузку блоками по несколько кб. Dim RetStr As String = System.IO.File.ReadAllText("C:\f.txt") этот код будет актуален с маленькими файлами или если его пустить во 2ой поток чтобы основной поток в котором форма не зависал. всеравно в некоторых случаях не нужно считывать файл целиком. например считать определенный кусок из файла... ну в общем решил реализовать через FileStream. там можно установить позицию чтения и считать как 1 байт так и блоками по несколько байт ну всеже спасибо за то что ответили) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:56:42 |
|
||
|
VB.NET побайтовое чтение из файла
|
|||
|---|---|---|---|
|
#18+
surbanec, для обработки больших файлов совсем не обязательно читать их побайтово. Во-первых, можно прочитать его построчно: Код: vbnet 1. 2. 3. 4. 5. Во-вторых, построчное чтение можно объединить с буферизованным чтением: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. В-третьих, ты делаешь ошибочное предположение что один байт, соответствует одному символу. Это не так т.к. существуют многобайтовые кодировки (например, семейство Unicode). Более того в рамках Unicode могут встречаться байты которым не соответствует никакой символ - так называемый Byte Order Mark (BOM). Чтобы не было проблем надо читать текстовые файлы с помощью предназаченых для этого классов. Например, StreamReader. При это следует явно указать кодировку или полагаться на кодировку по умолчанию - utf-8. P.S. Твой первоначальный код не работал из-за лишнего аргумента в функции FileGet т.к. третий параметр указывает позицию с которой нужно начать чтение. P.P.S. Первоначальный код также крайне неэффективно использует память. Ты объявил массив строк, затем создаешь отдельные элементы этого массива и, в конце, получаешь итоговую строку. Это неэффективно т.к. заставляет тратить место на массив и на отдельные строки (которые состоят всего из одного символа). У сборщик мусора будет очень много работы в таком случае. И кол-во этой работы прямо пропорционально длине файла. Ты пылался съэкономить память, а на деле ты её зря тратил. Вот такая ирония :) Для эффективного конструирования строк лучше использовать класс System.Text.StringBuilder. Сначала мы бы создали его - New StringBuilder(allFile) - сразу с нужной длиной. Затем с помощью метода Append() добавляли символы. И в конце вызвали бы метод ToString(). Затраты памяти были бы ниже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 19:10:10 |
|
||
|
|

start [/forum/topic.php?fid=20&gotonew=1&tid=1403383]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
201ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 549ms |

| 0 / 0 |
