现在的位置: 首页 > 综合 > 正文

JScript读写二进制文件

2012年09月18日 ⁄ 综合 ⁄ 共 1726字 ⁄ 字号 评论关闭

asp环境中,vbscript先天性的在读写二进制数据方面比JScript方便,JScript本身并无针对二进制数据(或者说字节数据)的数据类型、对象、方法,所以有些高手爱用JScript写ASP,但是如果涉及字节数据处理基本上都要头痛。只能用ADODB.Stream在文本模式下进行读写了,需要将字符集设置为单字节字符集(如iso-8859-1)。

var bin = new Array(256);
for(var i=0;i<256;i++){
    bin[i]
=String.fromCharCode(i);
}

function TestWrite(){
    
var Stream = new ActiveXObject("ADODB.Stream");
    
var adTypeBinary=1,adTypeText=2;
    Stream.Type 
= adTypeText;
    Stream.CharSet 
= "iso-8859-1";
    Stream.Open();
    
//Stream.WriteText("\x00\x01\x02\xff\xff");
    for(var i=0;i<256;i++){
        Stream.WriteText(String.fromCharCode(i));
        
//Stream.WriteText(bin[i]);
    }
    Stream.SaveToFile(
"c:\\windows\\temp\\test.bin"2);
    Stream.Close();
    Stream 
= null;
}
function BinaryFile(filepath){
    
var adTypeBinary=1,adTypeText=2;
    
var adSaveCreateNotExist=1,adSaveCreateOverWrite=2;
    
var adReadAll=-1,adReadLine=-2;
    
this.path=filepath;
    
this.WriteAll = function(content){
        
var Stream = new ActiveXObject("ADODB.Stream");
        Stream.Type 
= adTypeText;
        Stream.CharSet 
= "iso-8859-1";
        Stream.Open();
        Stream.WriteText(content);
        Stream.SaveToFile(
this.path, adSaveCreateOverWrite);
        Stream.Close();
        Stream 
= null;
    }
    
this.ReadAll = function(){
        
var Stream = new ActiveXObject("ADODB.Stream");
        Stream.Type 
= adTypeText;
        Stream.CharSet 
= "iso-8859-1";
        Stream.Open();
        Stream.LoadFromFile(
this.path);
        
var content = Stream.ReadText(adReadAll);
        Stream.Close();
        Stream 
= null;
        
return content;
    }
}
// Example Code
/*

var crFolder = 'C:/Temp/cr'
var bf1=new BinaryFile(crFolder+"/PCDV0026.JPG");
var bf2=new BinaryFile(crFolder+"/PCDV0026_.JPG");
bf2.WriteAll(bf1.ReadAll());
*/

抱歉!评论已关闭.