![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
diktator |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
Здравствуйте. Хочу вывести файл большого размера в текстовом поле, подскажите как быть. Размер файла 5МБ, и что если файл будет 1ГБ. Я вывожу так
где s - весь файл. Собственно из догадок, загружать к примеру файл по области видемости, к примеру 100 строк, ползунок делить на N раз, к примеру 10 если в файле 1000 строк. И при его передвижении открывать нужную часть файла. Или так нельзя? И как вообще можно в текстовое поле дописывать, а то setText() перезаписывает полностью. Вторая догадка, выделять много оперативной память, как это сделать тоже не знаю. 3 - комплексно. Помогите пожалуйста разобраться. |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
[яуоте=диктатор, 30.7.2011, 00:27, пост2383069]и что если файл будет 1ГБ[/яуоте]
маленький упрощенный расчет: 1 Гб = 1000 Мб = 1000 000 Кб = 1000 000 000 Байт одна буква равна два байта получаем: 500 000 000 букв возьмем среднее - слово = пять букв получаем: 100 000 000 слов в строку влазиет примерно 10 слов получаем: 10 000 000 строк в лист А4 влазиет примерно 55 - 60 строк (возьмем 50 для ровного счета) получаем: 200 000 двести тысяч листов! это кто такой нахрен писатель?! Лев Толстой? !!! Добавлено через 4 минуты и 30 секунд к разработчикам - какое еще "яуоте" - это была ссылка на текст топикстартера Добавлено через 11 минут и 15 секунд вас взломали? вот это был бы прикол!!! программистов взломали!!! ![]() |
|||
|
||||
diktator |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
dorogoyIV, ну от 2 до 4 в среднем в кодировке UTF-8. Да и кто сказал что там Война и мир, мне просто нужно вывести файл большого объема на экран, 5МБ, 1Гб я просто привел, потому как интересно как это реализуется.
|
|||
|
||||
jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
В UTF-8 от 1 до 4. От 2 до 4 - это UTF-16.
Если файл очень большой, то читается и показывается его часть, например при помощи RandomAccessFile -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
diktator |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 27.5.2010 Репутация: нет Всего: нет |
Ну я же написал в среднем, если речь идет о тексте, то я думаю что в основном это будут 2-4 байта на 1 символ. Не ну прочитать часть файла можно через обычную конструкцию, брейк сделать. Речь идет об Окнах, как вывести на экран весь файл сразу. То есть как сделать полосу прокрутки не по размеру текста и как ее отлавливать. |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
может быть сделать свой тексткомпонент, с прокруткой.
пошла прокрутка - читаем файл и пишем прочитанное в свой тексткомпонент (читать файл - RandomAccessFile) |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: нет Всего: 7 |
Однозначно весь файл в память грузить не надо.
![]() ![]() ![]() -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
danco0x53 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 1.8.2011 Репутация: нет Всего: нет |
1. Хорошего простого решения нет.
2. Для dorogoyIV: Лев Толстой уже давно отдыхает перед логами некоторых программ ![]() 3. Вариант с собственным компонентом - не столь плох. 4. Я бы - при необходимости решения такой задачи (показ с прокруткой в произвольное место большого текстового файла) - проиндексировал бы этот большой файл, набрав массив смещений для каждой строки в файле (гиг лога - пусть 10-20 млн. строк - 40-80 Мб, что приемлемо бывает), и заодно определив количество строк. Далее можно подчитывать файл по мере необходимости показа отдельных строк, держа в памяти только отображаемые (и выбранные) данные. Прокрутку от общего количества строк в файле и размера окна с текстом не так уж сложно будет сделать. 5. В принципе, можно такой компонентик сделать. Единственное, с чем придется изрядно погеморроится - это если автоперенос слов на новую строку. Тут да ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |