|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Конкретно сейчас делаю. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Для "красоты" мне не хватает знания количества строк (StreamReader его заранее не знает) В VB6 я пользовался классом cText: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.
Дерьмовенький, но для указанных целей самое оно, т.е. сразу читаем (работает быстро), потом циклом добавляем. Как лучше поступить? Написать такой же класс, кот. через StreamReader все сразу читает построчно в коллекцию? А потом уже с этим работать циклом. Да, и чего использовать? StreamReader? Или примитивное открытие "Open Path For Input As #FileHandle" как и в VB6? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 20:18 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Проверка пудинга заключается в том, что его съедают(с) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 21:01 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Изопропил, Ну и? Код VB6 съедает файл полностью (Sub OpenText ). 1)Писать такой же класс? 2)Через Open=StreamReader (+дописывать Save=StreamWriter когда понадобится)? Доки утверждают что "Stream-ы" быстрее, функции для работы с #FileHandle во всяком случае в VB.NET присутствуют. Я авансом вижу только одно преимущество - параметр кодировка (отвечает моим текущим установкам ориентироваться на UTF-8). 3)Строки в коллекции хранить? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 21:18 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Не надо ничего хранить Читать файл как двоичный используя один буфер и просто подсчитать количество байтов 0x0a Если последний байт отличен от 0x0a - добавить 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 21:26 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Изопропил, а нафига мне два раза в файл лезть и байты копать? Если мне все строки все одно потом понадобятся. Я сделал по образу и подобию (только то что сейчас нужно, да и остальное фигня если понадобится). Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Вот тест на 50000 строк Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Число строк 50000 моментом возвращает(короткие правда -номера телефонов). И строки все в кармане. Чем плохо? Я думаю сойдет. Вот в ListView это добавлять несколько дольше будет (это тест, обычно столько не надо). ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 22:32 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Дмитрий77, для этой задачи проще использовать File.ReadAllLines ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 23:27 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Дмитрий77, для отображения больших списков использует визуализация. но важно понимать, что конечному пользователю нафиг не сдался список в 50000 записей, так как просмотреть их у него нет возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 23:28 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Дмитрий77Если мне все строки все одно потом понадобятся. а я откуда знаю нужны они одновременно или нет? может ты индекс по ходу подсчёта строишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 23:57 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Roman Mejtesтак как просмотреть их у него нет возможности кто вам это сказал? если не всякий может, не означает ненужность никому ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 23:58 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
bazileдля этой задачи проще использовать File.ReadAllLines Ты уверен? Вот накидал навскидку: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
С одной стороны да, ReadAllLines типа одной строчкой удобнее. Но сразу куча вопросов. За корректность cText = Nothing не ручаюсь. Использовать ReDim? Но меньше одного элемента массива уже не сделаешь. Нумерация 0-based а не 1-based Return cText.Count для пустого массива - исключение. А если буду удалять строки из середины? Сдвигать элементы массива? У меня есть алгоритм где я такое делаю (очередь сообщений в трей), но мудохаться с этим здесь - перебор. Мне кажется, коллекция удобней - модель легче, проигрыша по скорости - либо никакого, либо спички, а м.б. даже быстрее. Если для "данной задачи", то м.б. да, а если инкапсулировать в класс - то думаю нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2015, 00:15 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Изопропил, то есть по вашему пользователь будет просматривать 50000 строк? ему это надо? если есть поиск, то он им воспользуется, если его нет, он посмотрит первые 100 и потом выкинет вашу программу в корзину и правильно сделает. компьютеры созданы, чтоб решать проблемы, а не создавать их. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2015, 09:41 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
ИзопропилRoman Mejtesтак как просмотреть их у него нет возможности кто вам это сказал? если не всякий может, не означает ненужность никомуМожет paging всех спасёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2015, 11:19 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Алексей К, Paging имхо, это худший вариань. Лучше всего сделать метод возвращающий перечисление, и загружать строки по мере того, как это перечисление загружается. Предварительно получить из этого перечисления ~500 строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2015, 11:50 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Ребят, ничего что я вмешиваюсь в вашу беседу? вопрос к ListView отношения не имел, что вы спорите. Ну, если интересно, в этот Listview у меня добавляется обычно несколько номеров телефонов кнопкой Add (по одному). Но есть кнопка Add From File, и да там можно добавить и несколько тысяч, и все нумеруется 1,2,3,...10000. После чего юзер может бегло просмотреть чего добавилось (если хочет, просто чтоб убедиться что добавилось 10000 а не 10) и нажать Send, после чего будет создано N идентичных "заданий" и произведена "рассылка" по ним. 10000 записей добавятся за 2 сек. Какая нахрен виртуализация. Единственное что я сделал, это использовал параллельную коллекцию, чтобы быстро отсекать дублирование телефонов при добавлении, о чем я спрашивал в соседнем топике. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2015, 12:52 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Roman MejtesАлексей К, Paging имхо, это худший вариань.И при этом используется в Web повсеместно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2015, 11:25 |
|
А как быстро узнать количество строк в файле?
|
|||
---|---|---|---|
#18+
Дмитрий77С одной стороны да, ReadAllLines типа одной строчкой удобнее. Не в строчке дело, а в задаче "прочитать строки из текстового файла", указанная функция File.ReadAllLines делает ИМЕННО ТО, ЧТО ТРЕБУЕТСЯ . Дмитрий77Но сразу куча вопросов. Какая ещё куча вопросов? Есть метод, который... смотри выше. Выделил жирненьким и красненьким для усвоения. Дмитрий77Использовать ReDim? Но меньше одного элемента массива уже не сделаешь. Какой ещё нафиг ReDim, это массив, с неизменяемой длинной. Дмитрий77Нумерация 0-based а не 1-based Я без понятия как там в VB.NET и даже знать не хочу, но в C# все массивы индексируются с нуля. Дмитрий77Return cText.Count для пустого массива - исключение. У массива нет Count, но есть Length, который всегда возвращает значение, даже если массив пустой (вернёт 0). Дмитрий77А если буду удалять строки из середины? Сдвигать элементы массива? У меня есть алгоритм где я такое делаю (очередь сообщений в трей), но мудохаться с этим здесь - перебор. А если хочешь работать с коллекцией таким образом, делаешь следующее: Код: c# 1. 2.
Итого, в text у тебя зачётная коллекция, можно вставлять/удалять из середины, в начало, в конец, без всяких тупых ReDim-ов. Очень быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2015, 12:14 |
|
|
start [/forum/topic.php?fid=20&msg=38945068&tid=1401610]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 354ms |
total: | 518ms |
0 / 0 |