2010-04-27 2 views
2

как large text file viewer work?Как работает просмотрщик больших текстовых файлов? Как построить большой текстовый считыватель

Я предполагаю, что:

  • резьбы используется для обработки файлу
  • TextBox обновляется построчно
  • Эффективная работа с памятью используется

Являются ли эти предположения верный? если кто-то должен был развить свои собственные, каковы они должны и не нужны?

Я ищу реализовать один с помощью DataGrid вместо TextBox

Я комфортно с C++ и Python. Я, вероятно, использовать QT/PyQt

РЕДАКТИРОВАНИЕ

Файлы, у меня есть, как правило, от 1,5 до 2 Гб. Я смотрю на редактирование и просмотр этих файлов.

+1

вам нужно редактировать или читать ли? Когда вы используете большой текст, насколько велики вы имеете в виду (MB? GB?)? –

+0

@David Rodríguez - dribeas 1 - 2 GB – dassouki

+0

Рассматривали ли вы использование базы данных для хранения ваших данных (так как это, по-видимому, в форм-факторе сетки)? – tgray

ответ

6

Я считаю, что трюк не загружает весь файл в память, а использует поиск и т. Д., Чтобы просто загрузить просматриваемую деталь (возможно, с блоком до и после обрабатывать немного прокрутки). Возможно, даже используя буферы с отображением памяти, хотя у меня нет опыта с ними.

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

4

В Кернигана и Plaugher в классической книге «Программные средства в Паскале» они охватывают разработку и дизайн выбор версии изд (1) и отметьте

«Предупреждение (Антиквар): edit является большая программа (за исключением взносов translit, find и change, в 950 линий, это пятьдесят процентов больше чем все остальное в этой книге «

. 10

И они (буквально) даже не использовали типы строк. Поскольку они отмечают, что файл, который нужно отредактировать, может существовать на tape, который не поддерживает произвольные записи в середине, им нужно было сохранить индекс позиций строки в памяти и работать с файлом с нуля для хранения изменений, удалений и дополнений, слияния все вместе при команде «сохранить». Они, как и вы, были обеспокоены тем, что память ограничивает размер их редактируемого файла.

Общая структура такого подхода сохраняется в GNU ed project, особенно в buffer.c

+0

Я знаю, что вы можете перезаписать данные в файле (на диске), но вставки в файл также на диске не поддерживаются, я думаю. – extraneon

+0

Это исторический интерес, но поскольку вы спросили ...Вы правы, большинство дисковых файловых систем позволят вам * переписывать * материал в середине файла, но не вставлять. Из-за механики некоторых ленточных кодировок, запись в середине не перезаписывает данные там, она выдает весь файл. – msw

Смежные вопросы