目录拷贝前的判断磁盘大小问题(50分)

  • 主题发起人 主题发起人 royal666
  • 开始时间 开始时间
R

royal666

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在已完成目录拷贝,例如:将“c:/winnt/fonts”拷至“d:/ce”下(只是打比方),但我要先判断<br>c:/winnt/fonts目录的大小,及d:的可用磁盘空间,以判断fonts文件的大小是否小于d磁盘可使用的大小,<br>若大于,则退出拷贝,我想用shfileoperation,但是当显示磁盘空间不够时,总有一部分文件已经从<br>源目录拷贝至目标目录,怎样解决?<br>或者是怎样写2个函数,用于知道c:/winnt/fonts目录的大小,d:的可用磁盘空间?<br>谢谢大家!!!!
 
先用findfirst,findnext,findclose,filesize查找和计算目录的大小,再用diskfree<br>得到磁盘的可用空间。
 
目录大小:逐个文件判断<br>空间大小:GetFreeSpaceForDrive
 
有这两个函数的源代码吗?因为有关文件的大小似乎不止一个值,能提供源代码吗?<br>两个函数的返回值应为什么?int64,还是integer,<br>实在很急,提供源码,立即给分,谢谢!!<br>
 
不是求磁盘的大小,而是求磁盘的剩余空间
 
得到目录大小<br>uses ShellApi<br><br>function GetDirectorySize(Path: String): Integer; //eg. Path = 'c:/temp/'<br>var<br>&nbsp; SR: TSearchRec;<br>begin<br>&nbsp; Result := 0;<br>&nbsp; if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then<br>&nbsp; begin<br>&nbsp; &nbsp; if (sr.Name &lt;&gt; '.') and (sr.Name &lt;&gt; '..') and (sr.Attr = faDirectory) then<br>&nbsp; &nbsp; &nbsp; Result := Result + GetDirectorySize(Path+Sr.Name+'/')<br>&nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; Result := Result + Sr.Size;<br>&nbsp; &nbsp; while FindNext(sr) = 0 do<br>&nbsp; &nbsp; &nbsp; if (sr.Name &lt;&gt; '.') and (sr.Name &lt;&gt; '..') and (sr.Attr = faDirectory) then<br>&nbsp; &nbsp; &nbsp; &nbsp; Result := Result + GetdirectorySize(Path+Sr.Name+'/')<br>&nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; Result := Result + Sr.Size;<br>&nbsp; &nbsp; FindClose(sr);<br>&nbsp; end;<br>end;<br><br><br>得到磁盘的剩余空间:<br>BOOL GetDiskFreeSpace(<br>&nbsp; LPCTSTR lpRootPathName, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// root path<br>&nbsp; LPDWORD lpSectorsPerCluster, &nbsp; &nbsp; // sectors per cluster<br>&nbsp; LPDWORD lpBytesPerSector, &nbsp; &nbsp; &nbsp; &nbsp;// bytes per sector<br>&nbsp; LPDWORD lpNumberOfFreeClusters, &nbsp;// free clusters<br>&nbsp; LPDWORD lpTotalNumberOfClusters &nbsp;// total clusters<br>);<br>只需要把lpSectorsPerCluster和lpBytesPerSector和lpNumberOfFreeClusters三个乘起来<br>就行了,得到的是字节数。<br>
 
要精确计算空间是否可用,必须考虑以下情况:<br>文件所占空间在不同类型的盘上是不同的。
 
文件所占空间在不同类型的盘上是不同的????<br>jsxjd,你能说的详细点吗?譬如说????<br>
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
859
DelphiTeacher的专栏
D
D
回复
0
查看
827
DelphiTeacher的专栏
D
D
回复
0
查看
775
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部