当前位置: 技术问答>linux和unix
在FAT32硬盘上快速创建大容量文件?
来源: 互联网 发布时间:2015-12-11
本文导语: 在ext2的文件系统上,可以通过lseek函数来快速创建大容量的文件,创建1G的文件耗时绝不会超出一秒。但在fat32的文件系统上,创建一个128M的文件都要好几秒。我想问问有没有可能在FAT32上也能快速创建大文件? | ...
在ext2的文件系统上,可以通过lseek函数来快速创建大容量的文件,创建1G的文件耗时绝不会超出一秒。但在fat32的文件系统上,创建一个128M的文件都要好几秒。我想问问有没有可能在FAT32上也能快速创建大文件?
|
你说的是sparse(空洞)文件。
不知你是在linux下mount上windows分区呢,还是在windows下操作。前者我没有试过,后者应该没问题,至少我的cygwin就没问题,而cygwin调用的是windows的API。
看资料说,windows下可以,具体参见MSDN:
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a file
FSCTL_SET_SPARSE, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
不知你是在linux下mount上windows分区呢,还是在windows下操作。前者我没有试过,后者应该没问题,至少我的cygwin就没问题,而cygwin调用的是windows的API。
看资料说,windows下可以,具体参见MSDN:
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a file
FSCTL_SET_SPARSE, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。