StartprogrammingusingObjectPascal:CopyFilesUsingTFileStream

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 메서드에 넘겨주었기 때문에 이것은 전체 파일 내용을 대상 파일로 복사합니다.