StartprogrammingusingObjectPascal:CopyFilesUsingTFileStream

From 흡혈양파의 번역工房
Revision as of 11:31, 4 April 2013 by Onionmixer (talk | contribs) (번역수정)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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