用VBS讀寫二進(jìn)制文件的另一種方法分享
之前寫的那篇給出的方法雖然不錯(cuò),但是當(dāng)文件過(guò)大時(shí)(其實(shí)很小,也就幾M),對(duì)應(yīng)的數(shù)組也會(huì)很大,然后會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤,提示內(nèi)存耗盡,為此我郁悶了好久。
雖然我沒(méi)有把那個(gè)程序解密出來(lái)(如果哪位真正的高手會(huì),麻煩指點(diǎn)一下),但是從中領(lǐng)悟出了用VBS讀寫二進(jìn)制文件的另一種方法,即Microsoft.XMLDOM+ADODB.Stream。這個(gè)方法的效率比原來(lái)那個(gè)高得多,而且似乎沒(méi)有文件大小限制。
Function ReadBinary(FileName)
Const adTypeBinary = 1
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.LoadFromFile FileName
node.NodeTypedValue = stream.Read
stream.Close
Set stream = Nothing
ReadBinary = node.Text
Set node = Nothing
Set xmldom = Nothing
End Function
函數(shù)的參數(shù)是要讀取的文件路徑,返回值是包含二進(jìn)制文件的十六進(jìn)制值的字符串。
Sub WriteBinary(FileName, Buf)
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim stream, xmldom, node
Set xmldom = CreateObject("Microsoft.XMLDOM")
Set node = xmldom.CreateElement("binary")
node.DataType = "bin.hex"
node.Text = Buf
Set stream = CreateObject("ADODB.Stream")
stream.Type = adTypeBinary
stream.Open
stream.write node.NodeTypedValue
stream.saveToFile FileName, adSaveCreateOverWrite
stream.Close
Set stream = Nothing
Set node = Nothing
Set xmldom = Nothing
End Sub
第一個(gè)參數(shù)是要讀入的文件路徑,第二個(gè)參數(shù)是包含二進(jìn)制文件的十六進(jìn)制值的字符串。至于如何獲得二進(jìn)制文件的十六進(jìn)制值,那方法就很多了,最簡(jiǎn)單的方法當(dāng)然就是用fso對(duì)象將ReadBinary函數(shù)的返回值寫到文本文件中去,然后Ctrl+C,Ctrl+V。其實(shí)用十六進(jìn)制工具也很簡(jiǎn)單。
其他的就不多說(shuō)了,看不懂的多看看MSDN參考文檔。寫了一個(gè)示例程序,里面包含了天空之城音樂(lè)的所有數(shù)據(jù),雙擊后在同一文件夾生成天空之城的MP3文件并播放。
原文:http://demon.tw/programming/vbs-binary-file-another.html
相關(guān)文章
用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁
用vbs實(shí)現(xiàn)確定是否安裝了某個(gè)特定的補(bǔ)丁...2007-03-03
vbscript 調(diào)用WebService實(shí)現(xiàn)代碼
vbscript 調(diào)用WebService實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-11-11
用VBS調(diào)用程序并對(duì)程序的運(yùn)行情況進(jìn)行監(jiān)控的兩個(gè)代碼
用VBS調(diào)用程序并對(duì)程序的運(yùn)行情況進(jìn)行監(jiān)控的兩個(gè)代碼...2007-03-03
VBS教程:VBScript 頁(yè)面的簡(jiǎn)單樣例
VBS教程:VBScript 頁(yè)面的簡(jiǎn)單樣例...2006-11-11
利用vbs腳本實(shí)現(xiàn)設(shè)置IE的打印頁(yè)眉頁(yè)腳信息
這篇文章主要為大家分享下通過(guò)vbs腳本實(shí)現(xiàn)設(shè)置IE的打印頁(yè)眉頁(yè)腳信息的代碼,需要的朋友可以參考下2007-02-02

