找回密码
 加入
搜索
查看: 2823|回复: 5

[效率算法] 反向读取二进制[已解决]

  [复制链接]
发表于 2011-1-29 20:31:34 | 显示全部楼层 |阅读模式
本帖最后由 蜘蛛抱蛋 于 2011-1-30 10:51 编辑

可不可以从文件末尾开始读取一定数量的二进制数据?类似 FileRead($File, -100)?
发表于 2011-1-29 20:38:10 | 显示全部楼层
$aWords=stringsplit(fileread($file),'')
_ArrayReverse($aWords)
filewritefromarray($fileq, $aWords)
不知道行不行
发表于 2011-1-29 20:41:36 | 显示全部楼层
_WinAPI_CreateFile()
_WinAPI_SetFilePointer()
_WinAPI_SetEndOfFile()
_WinAPI_ReadFile()
 楼主| 发表于 2011-1-29 20:47:14 | 显示全部楼层
回复 2# netegg


呵呵,我说的是比较大的二进制文件。从头开始读太慢,我只要末尾的一定字节长度的数据
    回复 3# 3mile


    楼上所指的方法我也有想过  一直在研究这个帖子   可是怎么的到文件末尾的 指针?
发表于 2011-1-29 20:54:07 | 显示全部楼层
_WinAPI_GetFileSizeEx
 楼主| 发表于 2011-1-29 21:40:12 | 显示全部楼层
回复 5# 3mile


    谢谢!尽管不懂C语言,仿照例子还是写出来了
#include <WinAPI.au3>
#include <Timers.au3>
Local $sFile, $hFile, $sText, $nBytes, $tBuffer, $pointer

$sFile = @ScriptDir & '\1.zip'
$tBuffer = DllStructCreate("byte[100]")
Local $f = _Timer_Init()
$hFile = _WinAPI_CreateFile($sFile, 2, 2)
$pointer = _WinAPI_GetFileSizeEx($hFile) - 100
_WinAPI_SetFilePointer($hFile, $pointer)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 100, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = StringTrimLeft(DllStructGetData($tBuffer, 1),2)
$s = _Timer_Diff($f)
MsgBox(0,'',$s)
ConsoleWrite($sText)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-2 20:32 , Processed in 0.090142 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表