📄 unitfilemove.pas
字号:
unit UnitFileMove;
{*******************************************************************}
{ }
{ Support: xcwen@sina.com }
{ }
{ finish 2005-12-14 }
{*******************************************************************}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,filectrl;
type
TfileSearch = class(TForm)
Button1: TButton;
Label1: TLabel;
EdtFileName: TEdit;
TreeView1: TTreeView;
Label2: TLabel;
Button2: TButton;
Label3: TLabel;
EdtToDir: TEdit;
Label4: TLabel;
lblSearchDir: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
searchDir:string;
procedure seathfile(FromDir:string;ToDir:string;FileName:string;node:Ttreenode);
{ Private declarations }
public
{ Public declarations }
end;
var
fileSearch: TfileSearch;
count:integer;
implementation
uses Ebookfrm;
{$R *.dfm}
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
try
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
except
end;
End;
procedure tfileSearch.seathfile(FromDir:string;ToDir:string;FileName:string;node:Ttreenode);
var
r:integer;
f:tsearchrec;
index:integer;
temp,s:string;
filetypelength:integer;
FileType:string;
Fstream :TFileStream ;
dirNode: Ttreenode;
begin
FileType:= ExtractFileExt(filename) ;
fileTypeLength:=length(fileType);
r:=findfirst(FromDir+'\'+fileName,faDirectory,f);
while r=0 do
begin
//复制文件
index:=1;
s:=copy(f.Name,1,length(f.Name )-fileTypelength) ;
temp:=s;
//得到唯一名称!
while fileexists(ToDir+'\'+s+fileType) do
begin
s:=temp+inttostr(index);
inc(index);
end;
treeview1.Items.AddChild(node,s) ;
filecopy(FromDir+'\'+F.Name ,ToDir+'\'+s+fileType);
application.ProcessMessages ;
inc(count);
self.Label1.Caption :=inttostr(count);
r:=findnext(f);
end;
//
r:=findfirst(FromDir+'\*.*',faDirectory,f);
while r=0 do
begin
if (f.Name <>'.') and (f.Name <>'..')and
(f.Attr and faDirectory = faDirectory ) then //是目录
begin
s:=f.Name ;
//得到唯一名称!
temp:=s;
index:=1;
while fileexists(ToDir+'\'+s+fileType) do
begin
s:=temp+inttostr(index);
inc(index);
end;
//创建相应目录文件
Fstream := TFileStream.Create(ToDir+'\'+s+fileType,fmOpenWrite or fmCreate );
Fstream.Free ;
//递归调用
dirNode:=treeview1.Items.AddChild(node,s) ;
seathfile(Fromdir+'\'+f.Name ,Todir,FileName,dirNode );
// 删除多余的节点文件
if ( not dirNode.HasChildren ) then
begin
deletefile(ToDir+'\'+s+fileType);
treeview1.Items.Delete(dirNode);
end;
end;
r:=findnext(f);
end;
end;
procedure TfileSearch.Button1Click(Sender: TObject);
begin
Treeview1.Items.Clear ;
count:=0;
if SelectDirectory('选择搜索目录 ...','',searchdir) then
begin
lblSearchDir.Caption := MinimizeName(
searchdir,lblsearchDir.Canvas ,lblsearchDir.Width );
EdtToDir.Text :=EdtFileName.Text +'Ebook';
end;
end;
procedure TfileSearch.Button2Click(Sender: TObject);
var toDir,filename:string;
begin
filename:='*.'+trim(edtfilename.Text );
Todir:=ExtractFilePath(searchdir)+ trim(EdtToDir.Text) ;
if (searchdir<>'') and (filename<>'') and (trim(EdtToDir.Text)<>'')then
begin
if not directoryexists(Todir) then
mkdir(Todir);
seathfile( searchdir,ToDir,filename,nil);
self.TreeView1.SaveToFile(Todir+'\'+trim(EdtTodir.Text )+'.ebook');
showmessage('完成创建!');
mainfrm.open_dir(Todir+'\'+trim(EdtTodir.Text )+'.ebook');
self.Close ;
end
else
begin
showmessage('不允许为空!');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -