[已解决]如何创建一个指定大小的空文件?
本帖最后由 user11 于 2011-10-30 20:01 编辑比如迅雷下载,得到文件大小以后,就会在硬盘生成一个和源一样大小的空文件,
AU3如何实现 创建 指定大小的空文件,要求文件的创建速度,,越快越好。。。
翻遍了帮助,百度谷歌 也没有找到 au3 可以实现的。。。C/C++ code
void CreateMyFile(szFileName, nFileLength)
{
FILE* fp = fopen("szFileName", "wb+"); // 创建文件
fseek(fp, nFileLength-1, SEEK_SET); // 将文件的指针 移至 指定大小的位置
fputc(EOF, fp); // 在要指定大小文件的末尾随便放一个数据
fclose(fp);
} 本帖最后由 pusofalse 于 2011-10-30 11:59 编辑
Func _CreateMyFile($sFilePath, $iFileSize, $fFailIfExists = 1)
Local $iFlags = ($fFailIfExists = 0) + 1
Local $hFile = DllCall("Kernel32.dll", "handle", "CreateFileW", "wstr", $sFilePath, "dword", 0xC0000000, "dword", 3, "ptr", 0, "dword", $iFlags, "dword", 0, "handle", 0)
$hFile = $hFile
If ($hFile = -1) Then Return SetError(1, 0, 0)
DllCall("Kernel32.dll", "long", "SetFilePointer", "handle", $hFile, "long", $iFileSize, "ptr", 0, "long", 0)
DllCall("Kernel32.dll", "bool", "SetEndOfFile", "handle", $hFile)
DllCall("Kernel32.dll", "bool", "CloseHandle", "handle", $hFile)
Return 1
EndFunc ;==>_CreateMyFile 回复 2# pusofalse
非常感谢超版,,测试了一下,,可以用,
但是文件最大只能生成 1.99GB,文件大小设置再大,就无效了?
我需要一次可以生成 3G以上文件一个,准备写个qq旋风刷分工具, 下载3g以上文件,一次200积分,每日上限200,一次搞定,
原来以为AU3实现不了,刚临时采用了 必须作为管理员或 Administrator 组的成员登录,才能使用 fsutil。管理员权限要获取太麻烦。。 本帖最后由 pusofalse 于 2011-10-30 16:21 编辑
回复 3# user11
Func _CreateMyFile($sFilePath, $iFileSize, $fFailIfExists = 1)
Local $iFlags = ($fFailIfExists = 0) + 1
Local $hFile = DllCall("Kernel32.dll", "handle", "CreateFileW", "wstr", $sFilePath, "dword", 0xC0000000, "dword", 3, "ptr", 0, "dword", $iFlags, "dword", 0, "handle", 0)
$hFile = $hFile
If ($hFile = -1) Then Return SetError(1, 0, 0)
Local $tIOStatus = DllStructCreate("ubyte IOStatus")
Local $pIOStatus = DllStructGetPtr($tIOStatus)
DllCall("Ntdll.dll", "long", "NtSetInformationFile", "handle", $hFile, "ptr", $pIOStatus, "int64*", $iFileSize, "long", 8, "long", 20)
DllCall("Kernel32.dll", "bool", "CloseHandle", "handle", $hFile)
Return 1
EndFunc ;==>_CreateMyFile
现在的代码应该可以了。 回复 4# pusofalse
非常感谢超版,,太棒了。。3G 秒杀,瞬间完成。。。 P版果然是强淫啊!膜拜......{:face (52):} 收藏,备用。。
页:
[1]