优盘检测Word下载.docx

上传人:b****5 文档编号:21204904 上传时间:2023-01-28 格式:DOCX 页数:10 大小:111.99KB
下载 相关 举报
优盘检测Word下载.docx_第1页
第1页 / 共10页
优盘检测Word下载.docx_第2页
第2页 / 共10页
优盘检测Word下载.docx_第3页
第3页 / 共10页
优盘检测Word下载.docx_第4页
第4页 / 共10页
优盘检测Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

优盘检测Word下载.docx

《优盘检测Word下载.docx》由会员分享,可在线阅读,更多相关《优盘检测Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

优盘检测Word下载.docx

szDrive=(PCHAR)szLogicalDriveStrings;

//指向字符数组

inti=0;

//循环每个卷

do

if(!

GetDirverInfo(szDrive))//检测硬盘

//printf("

\n获取错误:

%d"

GetLastError());

cout<

<

endl;

}

szDrive+=(lstrlen(szDrive)+1);

i++;

}while(*szDrive!

='

\x00'

);

printf("

\n"

szDrive);

//获取错误的编号

if(i==5)

"

未检测到U盘的插入,请插入U盘"

BOOLGetDirverInfo(LPSTRszDrive)

UINTuDriveType;

DWORDdwVolumeSerialNumber;

DWORDdwMaximumComponentLength;

DWORDdwFileSystemFlags;

CHARszFileSystemNameBuffer[BUFSIZE];

CHARszDirveName[MAX_PATH];

if(strcmp(szDrive,"

H:

\\"

)==0)

\n%s\n"

//输出盘的名字

GetDiskFreeSpaceEx(szDrive,&

FreeBytesAvailable,&

TotalNumberOfBytes,&

TotalNunberOfreeBytes);

可用的容量大小:

(FreeBytesAvailable.HighPart*pow(2,32)+FreeBytesAvailable.LowPart)/pow(2,30)<

G"

//输出可用容量大小

总容量的大小:

(TotalNumberOfBytes.HighPart*pow(2,32)+TotalNumberOfBytes.LowPart)/pow(2,30)<

//输出总容量大小

剩余容量的大小:

(TotalNunberOfreeBytes.HighPart*pow(2,32)+TotalNunberOfreeBytes.LowPart)/pow(2,30)<

//输出剩余容量大小

uDriveType=GetDriveType(szDrive);

//TCHAR的指针类型

G:

)==0)//复制您想要复制的文件

char*filepath="

c:

\\VMware.txt"

;

charc[20];

_finddata_tfile;

intk;

longHANDLE;

endl<

检测到U盘的插入,可以开始复制文件"

chara[20],b[20];

LOOP:

请输入原目标文件的路径:

比如将c盘下的Yang.txt文件复制到u盘"

那么输入:

\\Yang.txt"

那么输入:

u:

\\?

?

.txt"

(其中?

是你给该文件的取的名字,一定要加扩展名)"

//其中?

时你给该文件的取的名字

cin>

>

a;

filepath=a;

k=HANDLE=_findfirst(a,&

file);

if(k!

=-1)//检测文件是否存在

存在该文件,并且该文件的名字为:

<

file.name<

endl;

k=_findnext(HANDLE,&

else

不存在该文件,请检测该文件是否存在或复制其他文件"

gotoLOOP;

_findclose(HANDLE);

FILE*file1=fopen(filepath,"

r"

if(file1)//查询所要复制文件的大小

doublesize=filelength(fileno(file1));

if(size<

1024)

该文件的大小为:

size<

字节"

if(size>

=1024&

&

size<

1048576)

size/1024<

KB"

{if(size>

=1048576&

1073741824)

size/1048576<

MB"

size/1073741824<

}

(请对比文件的大小和U盘可用容量大小,然后再考虑是否复制文件)"

fclose(file1);

请输入指定目录的路径:

b;

CopyFile(a,b,false);

//将c盘目录下的VMware.txt复制到u盘目录下。

//DeleteFile(a);

//删除原路径目标文件

k=HANDLE=_findfirst(b,&

=-1)//检测是否复制成功

已经完成了复制,而且该文件的名字为:

复制失败,请重新复制:

GetVolumeInformation(

szDrive,

szDirveName,

MAX_PATH,

dwVolumeSerialNumber,

dwMaximumComponentLength,

dwFileSystemFlags,

szFileSystemNameBuffer,

BUFSIZE

))

returnFALSE;

if(0!

=lstrlen(szDirveName)&

strcmp(szDrive,"

)==0)//输出盘的别名

Drivenameis%s\n"

szDirveName);

returnTRUE;

//若将其注释掉,则只显示C盘的信息

intmain(intargc,char*argv[])

intDiskCount=0;

DWORDDiskInfo=GetLogicalDrives();

//利用GetLogicalDrives()函数可以获取系统中逻辑驱动器的数量,函数返回的是一个32位无符号整型数据。

while(DiskInfo)//通过循环操作查看每一位数据是否为1,如果为1则磁盘为真,如果为0则磁盘不存在。

{

if(DiskInfo&

1)//通过位运算的逻辑与操作,判断是否为1

++DiskCount;

DiskInfo=DiskInfo>

1;

//通过位运算的右移操作保证每循环一次所检查的位置向右移动一位。

//DiskInfo=DiskInfo/2;

cout<

逻辑磁盘数量:

DiskCount<

intDSLength=GetLogicalDriveStrings(0,NULL);

//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度。

char*DStr=newchar[DSLength];

//用获取的长度在堆区创建一个c风格的字符串数组

GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);

//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。

intDType;

intsi=0;

BOOLfResult;

signed_int64i64FreeBytesToCaller;

signed_int64i64TotalBytes;

signed_int64i64FreeBytes;

for(inti=0;

i<

DSLength/4;

++i)

//为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:

\NULLB:

\NULLC:

\NULL,这样的信息,所以DSLength/4可以获得具体大循环范围

chardir[3]={DStr[si],'

:

'

'

\\'

};

dir;

DType=GetDriveType(DStr+i*4);

//GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录

if(DType==DRIVE_FIXED)

硬盘"

elseif(DType==DRIVE_CDROM)

光驱"

elseif(DType==DRIVE_REMOVABLE)

可移动式磁盘"

elseif(DType==DRIVE_REMOTE)

网络磁盘"

elseif(DType==DRIVE_RAMDISK)

虚拟RAM磁盘"

elseif(DType==DRIVE_UNKNOWN)

未知设备"

fResult=GetDiskFreeSpaceEx(

dir,

(PULARGE_INTEGER)&

i64FreeBytesToCaller,

i64TotalBytes,

i64FreeBytes);

//GetDiskFreeSpaceEx函数,可以获取驱动器磁盘的空间状态,函数返回的是个BOOL类型数据

if(fResult)//通过返回的BOOL数据判断驱动器是否在工作状态

totalspace:

(float)i64TotalBytes/1024/1024<

MB"

//磁盘总容量

freespace:

(float)i64FreeBytesToCaller/1024/1024<

//磁盘剩余空间

else

设备未准备好"

si+=4;

}

getdiskfreespace();

return0;

使用说明:

程序会显示您的电脑上所有的磁盘数量,包括硬盘,光驱,可移动式磁盘,未知设备。

插入您的优盘,会显示您的优盘的可用的容量大小,总容量大小和剩余容量大小,还可以显示您的d盘的可用的容量大小,总容量大小和剩余容量大小。

当您插入优盘后,程序会检测到您的优盘已经插入,可以开始复制文件。

运行结果有一个举例,您可以根据例子,进行您想要的输入。

输入路径后,程序会判断文件是否存在,若存在,根据您的文件大小,您可以选择复制,输入您想要复制到的路径地方。

会判断您是否成功复制,若没有,重新复制。

设计和实验说明:

根据C++,运用GetDriveTypeW,GetDiskFreeSpaceEx,CopyFile,GetFileSize等函数,GetDriveTypeW获得磁盘数量和类型,驱动器类型,GetDiskFreeSpaceEx获取可用容量的大小,总容量大小和剩余量大小,CopyFile进行文件的复制,复制指定为一个新文件GetFileSize获得文件的大小。

总结:

学习了API,通过这次练习,了解了操作系统的文件系统的一些功能和应用,文件系统应用程序开发接口是系统提供的最重要,最基本的API集合之一,看了相关书籍,看到设计用户界面,很美观新颖,这次没有完成这个,会再接再厉学习。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1