StartprogrammingusingObjectPascal:CopyFilesUsingTFileStream
TFileStream을 사용한 파일 복사
이 예제에서는 TFileStream 형식을 사용하여 파일을 복사하려고 합니다.
이를 실행하려면 새 프로그램을 만들고 메인 폼에 이 구성요소를 놓습니다.
TButton, TOpenDialog, TSaveDialog
Button 의 OnClick 이벤트에 대해 다음 코드를 작성합니다.
procedure TfmMain.Button1Click(Sender: TObject);
var
SourceF, DestF: TFileStream;
Buf: array [0 .. 1023] of Byte;
NumRead: Integer;
begin
if OpenDialog1.Execute and SaveDialog1.Execute then
begin
SourceF:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
DestF:= TFileStream.Create(SaveDialog1.FileName, fmCreate);
while SourceF.Position < SourceF.Size do
begin
NumRead:= SourceF.Read(Buf, SizeOf(Buf));
DestF.Write(Buf, NumRead);
end;
SourceF.Free;
DestF.Free;
ShowMessage('Copy finished');
end;
end;
이 방법은 객체지향 파일을 사용한다는 점을 제외하면 비형식적 파일을 사용하는 것과 매우 유사합니다.
또한 파일을 복사하는 더욱 간단한 방법도 사용할 수 있습니다.
procedure TfmMain.Button1Click(Sender: TObject);
var
SourceF, DestF: TFileStream;
begin
if OpenDialog1.Execute and SaveDialog1.Execute then
begin
SourceF:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
DestF:= TFileStream.Create(SaveDialog1.FileName, fmCreate);
DestF.CopyFrom(SourceF, SourceF.Size);
SourceF.Free;
DestF.Free;
ShowMessage('Copy finished');
end;
end;
우리가 원본 파일의 크기(SourceF.size)를 CopyFrom 메서드에 넘겨주었기 때문에 이것은 전체 파일 내용을 대상 파일로 복사합니다.