Создать программу считывания произвольного файла и создание нового нетипизированного файла, копируя блоками - Pascal ABC
Формулировка задачи:
Создать программу считывания произвольного файла и создание нового нетипизированного файла, копируя блоками. Научиться использовать подпрограммы обработки директорий.
Решение задачи: «Создать программу считывания произвольного файла и создание нового нетипизированного файла, копируя блоками»
textual
Листинг программы
Program Example6;
{ Program to demonstrate the BlockRead and BlockWrite functions. }
Var Fin, fout : File;
NumRead,NumWritten : Word;
Buf : Array[1..2048] of byte;
Total : Longint;
begin
Assign (Fin, Paramstr(1));
Assign (Fout,Paramstr(2));
Reset (Fin,1);
Rewrite (Fout,1);
Total:=0;
Repeat
BlockRead (Fin,buf,Sizeof(buf),NumRead);
BlockWrite (Fout,Buf,NumRead,NumWritten);
inc(Total,NumWritten);
Until (NumRead=0) or (NumWritten<>NumRead);
Write ('Copied ',Total,' bytes from file ',paramstr(1));
Writeln (' to file ',paramstr(2));
close(fin);
close(fout);
end.
Объяснение кода листинга программы
- В программе создаются две переменные типа File - Fin и fout, которые представляют собой файлы для чтения и записи соответственно.
- Далее определяются три переменные - NumRead, NumWritten и Buf.
- NumRead является переменной типа Word и будет использоваться для хранения количества прочитанных байт.
- NumWritten также является переменной типа Word и будет использоваться для хранения количества записанных байт.
- Buf - это массив типа byte, который будет использоваться для хранения прочитанных и записанных данных.
- Затем определяется общая переменная Total типа Longint, которая будет использоваться для подсчета общего количества записанных байт.
- Программа повторяется до тех пор, пока NumRead не станет равным нулю или NumWritten не будет отличаться от NumRead.
- Внутри цикла выполняются следующие действия:
- Вызывается функция BlockRead, которая считывает данные из файла Fin в массив Buf. Размер считываемых данных определяется переменной Sizeof(buf).
- Затем вызывается функция BlockWrite, которая записывает данные из массива Buf в файл fout. Количество записываемых данных определяется переменной NumRead.
- После этого увеличивается значение переменной Total на количество записанных данных.
- После окончания цикла выводится сообщение о количестве скопированных байт.
- Наконец, закрываются файлы Fin и fout с помощью функций close.