delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)
delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)
由于想做个 "delphi桌面图标清理备份与恢复"
所以有必要测试一下各种方法对文件移动占用时间的影响
unit Unit1;
//桌面图标备份、恢复与清理
{
1 创建3个文件夹
C:\Users\Public\Desktop
D:\Personal\AutoRun\Desktoplnk\DesktopBak
D:\Personal\AutoRun\Desktoplnk\DesktopLnk
2 移动 C:\Users\Public\Desktop 中的文件和文件夹到
D:\Personal\AutoRun\Desktoplnk\DesktopBak
3 移动 D:\Personal\桌面 中的文件和文件夹到
D:\Personal\AutoRun\Desktoplnk\DesktopBak
4 复制 D:\Personal\AutoRun\Desktoplnk\DesktopLnk 到
C:\Users\Public\Desktop 中
}
interface
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ShellAPI,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure ShellFileOperation(fromFile: string; toFile: string; Flags: Integer);
//FO_MOVE移动文件夹,FO_Copy复制文件夹(不覆盖)
var
shellinfo : TSHFileOpStructA;
begin
with shellinfo do
begin
wnd := Application.Handle;
wFunc := Flags;
pFrom := PChar(fromFile);
pTo := PChar(toFile);
end;
SHFileOperation(shellinfo);
end;
procedure CopyFileByFolder(Ahandle: THandle; fromDir,
toDir: string);
var
SHFileOpStruct : TSHFileOpStruct;
pFromDir, pToDir : PAnsiChar;
begin
GetMem(pFromDir, Length(fromDir) + 2);
try
GetMem(pToDir, Length(toDir) + 2);
try
FillChar(pFromDir^, Length(fromDir) + 2, 0);
FillChar(pToDir^, Length(toDir) + 2, 0);
StrCopy(pFromDir, PChar(fromDir));
StrCopy(pToDir, PChar(toDir));
with SHFileOpStruct do
begin
Wnd := AHandle; // Assign the window handle
wFunc := FO_COPY; // Specify a file copy
pFrom := pFromDir;
pTo := pToDir;
fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
fAnyOperationsAborted := True;
hNameMappings := nil;
lpszProgressTitle := nil;
if SHFileOperation(SHFileOpStruct) <> 0 then
RaiseLastWin32Error;
end;
finally
FreeMem(pToDir, Length(ToDir) + 2);
end;
finally
FreeMem(pFromDir, Length(FromDir) + 2);
end;
end;
procedure DeleteDirFile(ADir: string);
var
sr : TsearchRec;
begin
if not DirectoryExists(ADir) then Exit;
try
if FindFirst(ADir + '*.*', faAnyFile, sr) = 0 then
begin
repeat
DeleteFile(PAnsiChar(ADir + sr.Name));
until FindNext(sr) <> 0;
end;
finally
FindClose(sr);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Dir : string;
BakDir : string;
begin
// 1 创建3个文件夹
// C: \Users\Public\Desktop
// D: \Personal\AutoRun\Desktoplnk\DesktopBak
// D: \Personal\AutoRun\Desktoplnk\DesktopLnk
Dir := 'C:\Users\Public\Desktop';
if not DirectoryExists(dir) then
ForceDirectories(dir);
BakDir := 'D:\Personal\AutoRun\Desktoplnk\DesktopBak\' +
Formatdatetime('yyyymmddhhnnss', Now());
if not DirectoryExists(BakDir) then
ForceDirectories(BakDir);
Dir := 'D:\Personal\AutoRun\Desktoplnk\DesktopLnk';
if not DirectoryExists(dir) then
ForceDirectories(dir);
//2 移动 C:\Users\Public\Desktop 中的文件和文件夹到
//D:\Personal\AutoRun\Desktoplnk\DesktopBak
ShellFileOperation('C:\Users\Public\Desktop\*.*',
BakDir, FO_move);
CopyFileByFolder(Self.Handle, 'C:\Users\Public\Desktop\*.*',
BakDir);
DeleteDirFile('C:\Users\Public\Desktop');
// 3 移动 D:\Personal\桌面 中的文件和文件夹到
// D: \Personal\AutoRun\Desktoplnk\DesktopBak
ShellFileOperation('D:\Personal\桌面\*.*',
BakDir, FO_move);
// 4 复制 D: \Personal\AutoRun\Desktoplnk\DesktopLnk 到
// C: \Users\Public\Desktop 中
CopyFileByFolder(Self.Handle, 'D:\Personal\AutoRun\Desktoplnk\DesktopLnk\*.*',
'C:\Users\Public\Desktop\');
{如果目标文件存在, True: 失败; False: 覆盖}
Application.Terminate;
end;
end.
///
BAT批处理版
REM 创建目录
md D:\Personal\桌面bak\
REM 备份桌面文件
start /min xcopy /e /c /i /q /r /y C:\Users\Public\Desktop\*.* D:\Personal\桌面bak\
xcopy /e /c /i /q /r /y C:\Users\Public\Desktop\*.* D:\Personal\桌面bak\
xcopy /e /c /i /q /r /y C:\Users\Public\Desktop\*.* D:\Personal\桌面bak\
start /min xcopy /e /c /i /q /r /y D:\Personal\桌面\*.* D:\Personal\桌面bak\
xcopy /e /c /i /q /r /y D:\Personal\桌面\*.* D:\Personal\桌面bak\
xcopy /e /c /i /q /r /y D:\Personal\桌面\*.* D:\Personal\桌面bak\
REM 清理桌面文件
REM 跳转到D:盘
D:
REM 改变当前目录以便使用deltree.exe
cd D:\Personal\AutoRun\清理桌面图标
start /min deltree /y C:\Users\Public\Desktop\*.*
start /min deltree /y D:\Personal\桌面\*.*
deltree /y C:\Users\Public\Desktop\*.*
deltree /y D:\Personal\桌面\*.*
REM 恢复桌面默认图标
start /min xcopy /e /c /i /q /r /y D:\Personal\AutoRun\清理桌面图标\桌面图标备份\*.* C:\Users\Public\Desktop\
xcopy /e /c /i /q /r /y D:\Personal\AutoRun\清理桌面图标\桌面图标备份\*.* C:\Users\Public\Desktop\
exit
转载于:https://www.cnblogs.com/delphichm/p/3470718.html
delphi 同盘移动文件所用时间测试(文件大小约6,083,545,088 字节)相关推荐
- FastCopy和ExtremeCopy同盘移动文件速度测试比较评测
FastCopy和ExtremeCopy同盘移动文件速度测试比较评测 一般情况下我只用 <ExtremeCopy 专业版 2.3.4 绿色破解版> 这款软件来复制文件.而不会去使用Fast ...
- 在Delphi中获取和修改文件的时间
Delphi中提供了很完备的Windows API函数的调用接口,可以方便的进行高级Windows编程.利用Delphi中的FindFirst函数可以得到一个文件的属性记录,该记录中的FindData ...
- 测试 RAM 盘和 DISK 盘的文件读写速度
一.目的 1.熟悉类 UNIX 系统的 I/O 设备管理 2.熟悉 MINIX 块设备驱动 3.熟悉 MINIX RAM 盘 二.内容与设计思想 测试 RAM 盘和 DISK 盘的文件读写速度,分析其 ...
- 关于FAT32分区的U盘4GB文件的测试
关于FAT32分区的U盘4GB文件的测试 很多人都知道FAT32的分区,单文件大小不能超过4GB,关于这个问题就来测测看. FAT32最大文件大小为2的32次方,也就是4294967296 Byte, ...
- 测试Unity中常用代码的运行所用时间:三维向量和变换位移篇 #性能测试 #Vector3 #tranform.position
C# Vector3 和 transform.position 篇 〇.前言 系统自带计时器 -System.Diagnostics.StopWatch- 的使用 一.三维向量测试 1. 三维向量的函 ...
- linux用u盘拷文件损坏,复制到u盘的文件总是损坏怎么办解决?
手上有一个U盘,买得很便宜,最近复制到u盘的文件总是损坏,然后用量产工具修复U盘,查资料说是黑片的,量产后再次使用一段时间后又出现文件损坏的问题,然后量产多少次都没用,换黑片量产工具速度优先也是无效: ...
- 能把计算机c盘我的文档,电脑c盘哪些文件可以删除,手把手教你c盘里哪些文件可以删除...
如果不是系统重要文件,无关紧要的话那么这些文件就可以清除,但计算机操作系统的文件是不能随意乱删除的,一旦乱删除了,计算机就会罢工了,这就让不少的用户感到困惑了,那么c盘里哪些文件可以删除?下面,小编就 ...
- 怎么传文件到百度云服务器,别人传文件给我 可是怎么用百度网盘保存文件呢 其实很简单!...
昨天有不少朋友问老北,百度网盘点下载没有反应,所以老北写一篇关于网盘如何下载文件和上传文件(本文适合新手,高手请飘过吧,手下留情). 生活中或者工作中经常会涉及到传送文件,一般大小的文件都是用微信.Q ...
- 记录一次实现网盘间文件同步工具
目录 工具实现过程记录 背景和目的 基础设计 网盘SDK基础工具 文件模型和网盘模型 配置文件和账号模型 任务模型 初步工作 找到指定目录和读取目录下的文件 如何对比 多任务的调度 改进和细化 多线程 ...
最新文章
- Ajax弹出式无刷新城市选择特效
- 关于android ksoap获取失败的问题
- java 泛型小小的测试题
- warshall算法求传递闭包c++_【建模小课堂】图论算法
- 电脑有两个显示器用来显示,如何配置呢,请看下文
- 一款很好看的个人主页源码
- 微信公众号教程(16)公司通讯录开发 终
- nvme固态硬盘开机慢_固态硬盘速度慢?三步教你开启SSD全速模式!
- 史上最全的launch的解析来啦,木有之一欧
- 35岁的程序员:第9章,女测试
- proftpd ldap mysql_安装proftpd+ldap报错
- 吴雪筠校友报告会----职场仪表、心态、自强之道
- 逆市稳进的基本盘 苏宁赢了什么?
- 历史最全自然语言处理测评基准分享-数据集、基准(预训练)模型、语料库、排行榜
- 大学物理复习笔记——静电场中的导体和电介质
- c3p0的基本使用方法
- 如何在Github快速找到资源(资源快速检索)
- 告别RNN,迎来TCN!将深度学习应用于股市预测
- hdu4422The Little Girl who Picks Mushrooms
- 自主导航小车实践(四)