StartprogrammingusingObjectPascal:CopyFilesUsingTFileStream

From 흡혈양파의 번역工房
Revision as of 11:54, 26 July 2012 by Onionmixer (talk | contribs) (SPOP TFileStream을사용한파일복사 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

TFileStream을 사용한 파일 복사

이 예제에서는 TFileStream 형식을 사용하여 파일을 복사하려고 합니다.

이를 수행하려면 새 프로그램을 만들고 메인 폼에 이 구성요소를 놓습니다.

TButton, TOpenDialog, TSaveDialog

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