![]() |
|
|
![]()
|
|
| RDC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 26.1.2008 Репутация: нет Всего: нет |
Как наиболее оптимально соединить несколько текстовых файлов в один?
--------------------
Живопись |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Я бы их соединил используя TStringList.
|
|||
|
||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: нет Всего: 1 |
RDC,
я думаю просто дописать один файл в конец другого |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Поясню. Допустим у тебя есть файл 1.txt и 2.txt. Тебе их надо сложить скажем в 3.txt
Вот такой шаблон. Конечно есть смысл ввести проверку на наличие файлов или отловить исключение. Так же можешь отсортировать содержимое файлов в алфавитном порядке и т.д. Дерзай имхо |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
этом случае придется загрузить оба файла в память, а если они большие? намного проще создать новый файл - 3.тхт, открыть его для записи, файл 1.тхт открыть для чтения, читать его построчно(или блоками) и записывать то что прочитали в 3.тхт, потом открыть 2.тхт и сделать с ним то-же что и с 1.тхт после каждой записи, файловый указатель будет смещаться в конец файла, так что новая порция данных будет дописываться в конец файла |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Об этом автор умалчивает. Если большие то конечно данный метод не совсем резонен. Тогда смысл вообще создавать 3 - й файл, можно открыть первый на запись а со второго добовлять в него. На самом деле если речь идет о дохленькой тачке то вопросов нет. Но раз чек обратился к Борману то есть смысл использовать VCL Это сообщение отредактировал(а) mrbrooks - 2.6.2008, 08:20 |
|||
|
||||
| rrrFer |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: нет Всего: 1 |
rrrFer,
|
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
эротично. хм. если речь конечно идет о консоле. |
||||
|
|||||
| RDC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 26.1.2008 Репутация: нет Всего: нет |
Спасибо всем за ответы. Оба варианта я пробовал. Первый плох тем что медленный, а второй плох тем что в случае ошибок, например отсутствия файлов или ещё что нибудь, плохо отлавливать ошибки. Может ещё что нибудь предложите?
--------------------
Живопись |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
на мой взгляд самый правельный вариант: используй файлы отображаемые в память!!!
Добавлено @ 09:11 пример превести не могу - сижу под линухом. но думаю сложностей не будет ЗЫ если чо спрашивай по поводу файлов отображаемых в память Добавлено @ 09:14 можно например
ЗЫ ой, не заметил что консоль уже предлагали Это сообщение отредактировал(а) chaos - 2.6.2008, 09:17 |
|||
|
||||
| rrrFer |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.5.2008 Где: Красноярск Репутация: нет Всего: 1 |
RDC,
а чем тебя не устраивает дописать один файл к другому? Можно ведь по строчкам переписать сразу...наверно достаточно бысто будет. или так:
Это сообщение отредактировал(а) rrrFer - 2.6.2008, 10:24 |
||||
|
|||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Самый оптимальный - с помощью функций CreateFile, ReadFile и WriteFile.
|
|||
|
||||
| RDC |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 205 Регистрация: 26.1.2008 Репутация: нет Всего: нет |
586, согласен с Вами. Щас буду реализовывать. Потом код выложу.
--------------------
Живопись |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Правда, может быть проблема, что текстовые файлы будут с разной кодировкой (например, символ перевода строки будет не CRLF а LF). Тогда нужно использовать функции из стандартной библиотеки - fopen и т.п. открывая файл в текстовом режиме. По умолчанию fopen открывает файл в текстовом режиме.
Это сообщение отредактировал(а) 586 - 2.6.2008, 22:19 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
жестоко. неучитывая то что сказал 586 решается это например так (быстрее чем с текстом возиться):
только я неособо вкурсе насчет размера in файла... нада почитать стандарт) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |