// 파일의 날짜 & 시간
FileTimeToLocalFileTime(inf.ftCreationTime, ftCL);
FileTimeToSystemTime(ftCL, ftC);
FileTimeToLocalFileTime(inf.ftLastAccessTime, ftLAL);
FileTimeToSystemTime(ftLAL, ftLA);
FileTimeToLocalFileTime(inf.ftLastWriteTime, ftLWL);
FileTimeToSystemTime(ftLWL, ftLW);
// 시스템 시간을 일반 시간 표시방법으로 변환
with ftC do
ftCs := format('%0.2d/%0.2d/%0.4d %0.2d:%0.2d:%0.2d', [wDay,wMonth,wYear,wHour,wMinute,wSecond]);
with ftLA do
ftLAs := format('%0.2d/%0.2d/%0.4d', [wDay,wMonth,wYear]);
with ftLW do
ftLWs := format('%0.2d/%0.2d/%0.4d %0.2d:%0.2d:%0.2d', [wDay,wMonth,wYear,wHour,wMinute,wSecond]);
Memo1.Lines.Add('생성시간(Creation Time): '+ ftCs);
Memo1.Lines.Add('최근접근시간(Last Access Time): '+ ftLAs);
Memo1.Lines.Add('최근수정시간(Last Write Time): '+ ftLWs);
// 파일의 속성(attributes)
FFileAttr := '';
if (FILE_ATTRIBUTE_ARCHIVE and inf.dwFileAttributes) = FILE_ATTRIBUTE_ARCHIVE then
FFileAttr := FFileAttr + 'Archive ';
if (FILE_ATTRIBUTE_SYSTEM and inf.dwFileAttributes) = FILE_ATTRIBUTE_SYSTEM then
FFileAttr := FFileAttr + 'System ';
if (FILE_ATTRIBUTE_READONLY and inf.dwFileAttributes) = FILE_ATTRIBUTE_READONLY then
FFileAttr := FFileAttr + 'ReadOnly ';
if (FILE_ATTRIBUTE_HIDDEN and inf.dwFileAttributes) = FILE_ATTRIBUTE_HIDDEN then
FFileAttr := FFileAttr + 'Hidden ';
Memo1.Lines.Add('파일속성(File Attributes): '+FFileAttr);
// 레지스트리의 HKEY_CLASSES_ROOT에서 파일의 설명을 구한다
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
reg.OpenKey('\'+ExtractFileExt(FFileName),false);
Memo1.Lines.Add('파일설명(File Type): '+ reg.ReadString(''));
reg.Free;
Windows.FindClose(i);
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Registry;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
FFileName, FFileAttr: String;
i: THandle;
inf: TWin32FindData;
ftC,ftLA,ftLW: TSystemTime;
ftCL,ftLAL,ftLWL: TFileTime;
ftCs,ftLAs,ftLWs: string;
reg: TRegistry;
begin
// 파일을 선택한다
if not OpenDialog1.Execute then
System.Exit;
FFileName := OpenDialog1.FileName;
Memo1.Clear;
ftCs :='';
ftLAs :='';
ftLWs :='';
i := FindFirstFile(PChar(FFileName), inf); // 파일의 정보를 읽는다
Memo1.Lines.Add('파일명(Long File Name): '+ inf.cFileName);
Memo1.Lines.Add('DOS 파일명(DOS File Name): '+ inf.cAlternateFileName);
Memo1.Lines.Add('파일크기(File Size): '+ FloatToStr((inf.nFileSizeHigh * MAXDWORD) + inf.nFileSizeLow));
Memo1.Lines.Add('파일경로(File Path): '+ ExtractFilePath(FFileName));
// 파일의 날짜 & 시간
FileTimeToLocalFileTime(inf.ftCreationTime, ftCL);
FileTimeToSystemTime(ftCL, ftC);
FileTimeToLocalFileTime(inf.ftLastAccessTime, ftLAL);
FileTimeToSystemTime(ftLAL, ftLA);
FileTimeToLocalFileTime(inf.ftLastWriteTime, ftLWL);
FileTimeToSystemTime(ftLWL, ftLW);
// 시스템 시간을 일반 시간 표시방법으로 변환
with ftC do
ftCs := format('%0.2d/%0.2d/%0.4d %0.2d:%0.2d:%0.2d', [wDay,wMonth,wYear,wHour,wMinute,wSecond]);
with ftLA do
ftLAs := format('%0.2d/%0.2d/%0.4d', [wDay,wMonth,wYear]);
with ftLW do
ftLWs := format('%0.2d/%0.2d/%0.4d %0.2d:%0.2d:%0.2d', [wDay,wMonth,wYear,wHour,wMinute,wSecond]);
Memo1.Lines.Add('생성시간(Creation Time): '+ ftCs);
Memo1.Lines.Add('최근접근시간(Last Access Time): '+ ftLAs);
Memo1.Lines.Add('최근수정시간(Last Write Time): '+ ftLWs);
// 파일의 속성(attributes)
FFileAttr := '';
if (FILE_ATTRIBUTE_ARCHIVE and inf.dwFileAttributes) = FILE_ATTRIBUTE_ARCHIVE then
FFileAttr := FFileAttr + 'Archive ';
if (FILE_ATTRIBUTE_SYSTEM and inf.dwFileAttributes) = FILE_ATTRIBUTE_SYSTEM then
FFileAttr := FFileAttr + 'System ';
if (FILE_ATTRIBUTE_READONLY and inf.dwFileAttributes) = FILE_ATTRIBUTE_READONLY then
FFileAttr := FFileAttr + 'ReadOnly ';
if (FILE_ATTRIBUTE_HIDDEN and inf.dwFileAttributes) = FILE_ATTRIBUTE_HIDDEN then
FFileAttr := FFileAttr + 'Hidden ';
Memo1.Lines.Add('파일속성(File Attributes): '+FFileAttr);
// 레지스트리의 HKEY_CLASSES_ROOT에서 파일의 설명을 구한다
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
reg.OpenKey('\'+ExtractFileExt(FFileName),false);
Memo1.Lines.Add('파일설명(File Type): '+ reg.ReadString(''));
reg.Free;
Windows.FindClose(i);
end;
end.
=======================================================
음... 위의 결과는 memo 콤포넌트에 아래와 같이 출력된다.
=======================================================
파일명(Long File Name): DelphiTip.zip
DOS 파일명(DOS File Name): DELPHI~1.ZIP
파일크기(File Size): 732401
파일경로(File Path): C:\Documents and Settings\한대필\바탕 화면\
생성시간(Creation Time): 28/02/2003 11:06:19
최근접근시간(Last Access Time): 28/02/2003
최근수정시간(Last Write Time): 28/02/2003 11:06:24
파일속성(File Attributes): Archive
파일설명(File Type): ALZip.zip
==========================================================