Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Соединить два текстовых файла (Delphi xe4). (http://forum.oszone.net/showthread.php?t=332992)

Tdelphi 04-02-2018 21:12 2795819

Соединить два текстовых файла (Delphi xe4).
 
Добрый вечер.

Задача состоит в следующем: Программа на delphi xe4. На форме расположена кнопка. При нажатии на кнопку нужно выбрать нужные файлы из папки и соединить их в один. Файлы формата .txt. Кто может подсказать функцию для соединения больших файлов (1 гигабайт и выше) ?. Или может есть готовый вариант, в общем любые ваши предложения и помощь.

Gramodei 07-03-2018 21:06 2802177

Возможно TXTcollector поможет? Хотя на файлах именно такого размера я его не пробовал.

shisik 07-03-2018 23:01 2802188

А что мешает небольшими блоками скопировать содержимое первого файла в новый файл, а потом сразу содержимое второго? Не обязательно ж все даныне в память загружать.

ziku 08-03-2018 21:29 2802290

Обычно, лично я когда мне нужен был текст, просто выделял его и копировал, а потом вставлял в блокнот. Так можно было склеить любую длину файлов с расширением ххх.txt. Для меня это было проще. Да же книги которые нельзя скачать я так собирал
Но если нужно склеить много файлов в один существует малюсенькая программа - File Joiner. Я ей никогда не пользовался и ничего о ней сказать не могу.

NickM 09-03-2018 06:29 2802324

Код:

copy /b file1+file2 file3

shisik 09-03-2018 13:36 2802370

ziku, NickM, а разве задача не в написании соответствующей программы?

ziku, скопировать в блокнот гигабайт текста. Хорошая шутка :)

opel431 10-03-2018 17:36 2802584

Попробуйте через потоки
Код:

procedure ConcatenateFiles(const InFileNames: array of string;
  const OutFileName: string);
var
  i: Integer;
  InStream, OutStream: TFileStream;
begin
  OutStream := TFileStream.Create(OutFileName, fmCreate);
  try
    for i := 0 to high(InFileNames) do
    begin
      InStream := TFileStream.Create(InFileNames[i], fmOpenRead);
      try
        OutStream.CopyFrom(InStream, InStream.Size);
      finally
        InStream.Free;
      end;
    end;
  finally
    OutStream.Free;
  end;
end;

ConcatenateFiles(['Part1', 'Part2'], 'OutFile')



Время: 23:52.

Время: 23:52.
© OSzone.net 2001-