本站原创,欢迎转载;尊重他人劳动,转载时保留以下信息:
本文转自:360ITO技术社区
原文标题:获取文件长度不正确的问题解决了,但是还是觉得有点不可思议
原文地址:http://www.360ito.com/article/153.html
下面今天新做的一个获取文件长度的函数。
function onGetFileSize(arg_file:String):Int64; var fileHandle:Integer; begin fileHandle := FileOpen(arg_file,0); Result := getFileSize(fileHandle,nil); FileClose(fileHandle); end;
上面这个函数就是获取一个文件长度,一般情况下都没有啥问题,但是如果是网上新下载的文件调用onGetFileSize后就会返回一个很大的数,下载代码如下:
FDownloadHttpCliCtrl.URL := url; FDownloadHttpCliCtrl.RcvdStream := TFileStream.Create(‘c:\tmp\123.zip’, fmCreate); FDownloadHttpCliCtrl.Get; FDownloadHttpCliCtrl.RcvdStream.Destroy; FDownloadHttpCliCtrl.RcvdStream := nil;
上面的下载过程完成后,调用onGetFileSize(‘c:\tmp\123.zip’)函数后就返回一个很大的数,具体问题处在那里就不是很清楚了,在文件下载后也调用了FDownloadHttpCliCtrl.RcvdStream.Destroy销毁了,这个时候应该文件也是正常关闭了才对。
无奈之下只有换种做法再试试了,后来发现用TFileStream来获取文件长度问题就解决了,就先这么用吧!改后代码如下:
function TEMSystem.onGetFileSize(arg_file:String):Int64; var fileStream:TFileStream; begin fileStream := TFileStream.Create(arg_file,fmShareDenyNone); try Result := fileStream.Size; finally FreeAndNil(fileStream); end; end;
共有0个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止