| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Конкатинация 2 текстовых файлов |
| Автор: RDC 2.6.2008, 01:59 |
| Как наиболее оптимально соединить несколько текстовых файлов в один? |
| Автор: mrbrooks 2.6.2008, 07:43 |
| Я бы их соединил используя TStringList. |
| Автор: rrrFer 2.6.2008, 07:53 | ||
RDC,
я думаю просто дописать один файл в конец другого |
| Автор: mrbrooks 2.6.2008, 07:57 | ||
Поясню. Допустим у тебя есть файл 1.txt и 2.txt. Тебе их надо сложить скажем в 3.txt
Вот такой шаблон. Конечно есть смысл ввести проверку на наличие файлов или отловить исключение. Так же можешь отсортировать содержимое файлов в алфавитном порядке и т.д. Дерзай имхо |
| Автор: Lazin 2.6.2008, 08:11 |
этом случае придется загрузить оба файла в память, а если они большие? намного проще создать новый файл - 3.тхт, открыть его для записи, файл 1.тхт открыть для чтения, читать его построчно(или блоками) и записывать то что прочитали в 3.тхт, потом открыть 2.тхт и сделать с ним то-же что и с 1.тхт после каждой записи, файловый указатель будет смещаться в конец файла, так что новая порция данных будет дописываться в конец файла |
| Автор: mrbrooks 2.6.2008, 08:18 | ||
Об этом автор умалчивает. Если большие то конечно данный метод не совсем резонен. Тогда смысл вообще создавать 3 - й файл, можно открыть первый на запись а со второго добовлять в него. На самом деле если речь идет о дохленькой тачке то вопросов нет. Но раз чек обратился к Борману то есть смысл использовать VCL |
| Автор: rrrFer 2.6.2008, 08:30 | ||
rrrFer,
|
| Автор: mrbrooks 2.6.2008, 08:32 | ||||
эротично. хм. если речь конечно идет о консоле. |
| Автор: RDC 2.6.2008, 09:07 |
| Спасибо всем за ответы. Оба варианта я пробовал. Первый плох тем что медленный, а второй плох тем что в случае ошибок, например отсутствия файлов или ещё что нибудь, плохо отлавливать ошибки. Может ещё что нибудь предложите? |
| Автор: chaos 2.6.2008, 09:10 | ||
| на мой взгляд самый правельный вариант: используй файлы отображаемые в память!!! Добавлено @ 09:11 пример превести не могу - сижу под линухом. но думаю сложностей не будет ЗЫ если чо спрашивай по поводу файлов отображаемых в память Добавлено @ 09:14 можно например
ЗЫ ой, не заметил что консоль уже предлагали |
| Автор: rrrFer 2.6.2008, 09:26 | ||||
RDC,
а чем тебя не устраивает дописать один файл к другому? Можно ведь по строчкам переписать сразу...наверно достаточно бысто будет. или так:
|
| Автор: 586 2.6.2008, 18:02 |
| Самый оптимальный - с помощью функций CreateFile, ReadFile и WriteFile. |
| Автор: RDC 2.6.2008, 21:02 |
| 586, согласен с Вами. Щас буду реализовывать. Потом код выложу. |
| Автор: 586 2.6.2008, 22:09 |
| Правда, может быть проблема, что текстовые файлы будут с разной кодировкой (например, символ перевода строки будет не CRLF а LF). Тогда нужно использовать функции из стандартной библиотеки - fopen и т.п. открывая файл в текстовом режиме. По умолчанию fopen открывает файл в текстовом режиме. |
| Автор: jonie 3.6.2008, 11:14 | ||
жестоко. неучитывая то что сказал 586 решается это например так (быстрее чем с текстом возиться):
только я неособо вкурсе насчет размера in файла... нада почитать стандарт) |