用此方法对NTFS分区操作一切正常,而且很快。但是对FAT32分区操作就会出现假死症状。现象如下:
1.程序假死。但是文件还是创建了。大小也一致。
2.在假死的过程中如果拔掉U盘,就会弹出“au unamed file was not found.”的对话框,程序恢复正常。
3.如果创建的文件比较小,那等一段时间后也是能恢复正常,文件也正常创建了。
经过分析了下,问题确定为CFile::close()函数里的CloseHandle(),搜了下了解到这是内核函数。也就是说是在关闭Cfile对
象时出现了问题。
假死时间的长短和创建文件的大小有关。我猜测是不是NTFS和FAT32在创建文件的方式不一样:
1. NFTS是直接创建了文件,划片区给它,然后不必填内容。
2. FAT32是创建了文件,划片区后,必须往里面填点东西。如果我不写,它就自己往里写。
这个思路自己验证了下,打开在两个分区创建的文件,结果是内面都是0。那就是说不是这个问题。
那问题是什么原因导致的呢?我记得以前用flashget,迅雷的时候,它们也会先创建一个和下载文件一样大的临时文件做缓冲区。它们又是什么做到能很
快的创建大文件呢?
小弟我才疏学浅,不知道是不是我自己在哪有个很低级的错误没发现,希望大虾能给于指教。
但是我记得 NTFS, 如果目录不是具有压缩属性的, 创建软件也没有设置 sparse, 创建大文件也并不快 (多年没有用过 fat32, 没
有对比了).
On 9/22/09, colprog <col...@gmail.com> wrote:
> 好像是有个trick,建一个小文件,然后打开,设置文件指针,然后关闭。
> 好像这样是很快的~
>
--
Sent from my mobile device
笑骂由人,洒脱自如!
心若冰清,天塌不惊!
http://www.iron-feet.cn