1. Принцип резки/комбинации файлов
Резка файла - это нарезать файл в несколько небольших файлов. Метод состоит в том, чтобы прочитать объект файла в форме «потока файла», а затем сохранить его в файлы в соответствии с определенным размером блока. Комбинация файлов означает объединение нескольких файлов в один файл. Например, этот принцип используется для упаковочных инструментов (мудрый). Если вы знакомы с концепцией «потока», то это будет легко реализовать. 2. осознавать
Создайте новый проект в Delphi, затем добавьте две кнопки, одну редактирование, одну Opendialog и одну сохранение в форме, а затем измените подпись Button1 на «вырезать» и подпись Button2 на «Комбинацию» (примечание: Другое управления опущенными атрибутами). Дважды щелкните Button1 и Button2 и напишите следующий код:
// сократить файл
Процедура tform1.button1click (отправитель: tobject);
вар
Я, WantedFragsize, Realtowrite: Integer;
// объявить два объекта потока файла
// instream - это объект потока исходного файла ввода, а Outstream - это объект потока вывода
Instrem, Outstream: tfileStream;
S: String;
Начинать
Если opendialog1.execute then
Начинать
Savedialog1.title: = 'Введите имя файла резки, которое вы хотите сохранить »;
Если savedialog1.execute then
Начинать
WantedFragsize: = strtoint (edit1.text);
i: = 0;
// Создать объект потока ввода файла в манере только для чтения
InStream: = tfileStream.create (
Opendialog1.filename, fmopenread);
Пытаться
// Если текущая позиция указателя потока инструмента не в конце, прочтите данные и сохраните их в файл в соответствии с определенным размером блока //
while (instream.position <enstream.size)
Начинать
S: = inttoStr (i);
в то время как длина (s) <3 do s: = '0'+s;
S: = '.'+S;
// Сгенерировать расширение файла среза, используйте три цифры в качестве расширения для облегчения комбинации файлов
// Если оставшийся размер блока в инструменте меньше, чем определенный размер блока, сохраните оставшийся номер блока // данные в файл
Если instream.size - instream.position <WantedFragsize тогда
Realtowrite: = instream.size - instream.position
еще
Realtowrite: = WantedFragsize;
// Создать объект потока выходного файла
Outstream: = tfilestream.create (savedialog1.filename+s, fmcreate);
пытаться
Upstream.copyfrom (instream, realtowrite);
Inc (i);
Окончательно
// Отпустите объект потока выходного файла
Outstream.free;
конец;
конец;
Окончательно
Instrem.free;
конец;
конец;
конец;
конец; // Комбинированный файл
Процедура tform1.button2click (отправитель: tobject);
вар
я: целое число;
Instrem, Outstream: tfileStream;
Sourcepatath, fragname, s: string;
Начинать
Opendialog1.title: = 'Пожалуйста, выберите File';
Если opendialog1.execute then
Начинать
// Получить путь к открытому в настоящее время файл вырезания
Sourcepath: = ExtractfilePath (Opendialog1.filename);
// Получить имя файла открытого в настоящее время файла вырезания
FragName: = ExtractFilEname (Opendialog1.filename);
Savedialog1.title: = 'Пожалуйста, введите имя файла, которое вы хотите объединить';
Если savedialog1.execute then
Начинать
i: = 0;
S: = inttoStr (i);
в то время как длина (s) <3 do s: = '0'+s;
S: = '.'+S;
FragName: = changeFileext (fragName, s);
// Если есть файл с расширением .000 в каталоге, создайте выходной поток файла // объект
Если FileExists (sourcepath+fragname), то
Начинать
Outstream: = tfilestream.create (savedialog1.filename, fmcreate);
Пытаться
// комбинирование файлов с шагом с расширением файла
В то время как файлы (sourcepath+fragname) делают
Начинать
InStream: = tfileStream.Create (sourcepath+fragname, fmopenread);
Пытаться
// Написать данные потока входного файла в потоку выходного файла
Upstream.copyfrom (instream, 0);
Inc (i);
S: = inttoStr (i);
в то время как длина (s) <3 do s: = '0'+s;
S: = '.'+S;
FragName: = changeFileext (fragName, s);
Окончательно
Instrem.free;
конец;
конец;
Окончательно
Outstream.free;
конец;
конец;
конец;
конец;
конец;
Среди многих ежедневных инструментов, которые мы используем, есть много объектов «потока», которые мы будем использовать, и их функции также очень важны. Похватывать это очень полезно и важнее.