zoukankan      html  css  js  c++  java
  • 整个目录的拷贝 Delphi TDirectory

    自己的电脑上有些绿色软件,一般是放在D盘的一个目录下面,但是需要放在C盘使用,于是自己写了个拷贝或者更新的小程序练手。

    IOUtils 单元主要就是三个结构: TDirectory、TPath、TFile, 很有用。这次我用到了TDirectory。

    TDirectory.CreateDirectory();     {建立新目录}

    TDirectory.Exists();              {判断文件夹是否存在}

    TDirectory.IsEmpty();             {判断文件夹是否为空}

    TDirectory.Copy();                {复制文件夹}

    TDirectory.Move();                {移动文件夹}

    TDirectory.Delete();              {删除文件夹, 第二个参数为 True 可删除非空文件夹}

    TDirectory.GetDirectoryRoot();    {获取目录的根盘符, 如: C:\}

    TDirectory.GetCurrentDirectory;   {获取当前目录}

    TDirectory.SetCurrentDirectory(); {设置当前目录}

    {这是实现拷贝一个目录的,源目录必须存在,目标目录如果存在,将重建。}
    function CopyOnePath(sDirName:String;sToDirName:String):Boolean;
    begin
      if not TDirectory.Exists(sDirName) then
      begin
       result:=false;
       exit;
      end;
      if TDirectory.Exists(sToDirName) then TDirectory.Delete(sToDirName,true);
      TDirectory.Copy(sDirName,sToDirName); {包括子目录在内,将全部复制。}
      result:=true;
    end;

    使用上面的系统函数,需要在头部包含:

    uses
    IOUtils;

    以前曾用过下面的代码,留作参考。

    function DoCopyDir(sDirName:String;sToDirName:String):Boolean;
    var
       hFindFile:Cardinal;
       t,tfile:String;
       sCurDir:String[255];
       FindFileData:WIN32_FIND_DATA;
    begin
       //记录当前目录
       sCurDir:=GetCurrentDir;
       ChDir(sDirName);
       hFindFile:=FindFirstFile('*.*',FindFileData);
       if hFindFile<>INVALID_HANDLE_VALUE then
       begin
            if not DirectoryExists(sToDirName) then
               ForceDirectories(sToDirName);
            repeat
                  tfile:=FindFileData.cFileName;
                  if (tfile='.') or (tfile='..') then
                     Continue;
                  if FindFileData.dwFileAttributes=
                  FILE_ATTRIBUTE_DIRECTORY then
                  begin
                       t:=sToDirName+'\'+tfile;
                       if  not DirectoryExists(t) then
                           ForceDirectories(t);
                       if sDirName[Length(sDirName)]<>'\' then
                          DoCopyDir(sDirName+'\'+tfile,t)
                       else
                          DoCopyDir(sDirName+tfile,sToDirName+tfile);
                  end
                  else
                  begin
                       t:=sToDirName+'\'+tFile;
                       CopyFile(PChar(tfile),PChar(t),True);
                  end;
            until FindNextFile(hFindFile,FindFileData)=false;
          ///  FindClose(hFindFile);
       end
       else
       begin
            ChDir(sCurDir);
            result:=false;
            exit;
       end;
       //回到当前目录
       ChDir(sCurDir);
       result:=true;
    end;
    工作生活中,需要写个程序的时候就编个; 编写的过程中,需要用到的不会的就去网上搜个; 任务完成就好,不求闻达。
  • 相关阅读:
    英黑客侵入Zynga系统窃得价值1200万美元筹码 狼人:
    瑞星发布2010企业安全报告 九成国内企业曾被入侵 狼人:
    赛门铁克大中国区总裁吴锡源:云安全是一项系统工程 狼人:
    频遭攻击 索尼无奈关闭多国网站 狼人:
    Pwn2Own黑客大赛首日:Safari、IE8被攻破 狼人:
    疯子的研究:瘫痪整个互联网绝非天方夜谭 狼人:
    Google收购安全分析软件厂商Zynamics 狼人:
    RSA大会:黑客正在觊觎个人用户而非网络 狼人:
    从索尼泄密看云计算安全 狼人:
    RSA公布被攻击内幕:钓鱼邮件惹祸 狼人:
  • 原文地址:https://www.cnblogs.com/sures/p/6013803.html
Copyright © 2011-2022 走看看