程序员人生 网站导航

PB9读写大容量文件的方法

栏目:sybase时间:2013-11-29 17:57:13
  在pb9中,系统自带的读写文件的函数是fileread和filewrite,这两个函数最大的限制是读写量:一次最大只能读写32765字节的数据。这个限制导致它本身不适用于读写大容量的文件。
        下面给出使用流stream方式读写文件的方法,包括两个全局函数f_readfile(string as_file)和f_writefile(blob ab, string as_file),分别用于读文件和写文件。
  
        (1)读文件函数:blob f_readfile(string as_file)
 
global function blob f_readfile (string as_file); 
//pb9读取文件内容的方法by yyoinge 20111104 
blob lb 
if not fileexists(as_file) or filelength(as_file) = 0 then return lb 
oleObject ADODB 
ADODB = CREATE OLEObject    
if ADODB.ConnectToNewObject("ADODB.Stream")    <> 0 then 
    messagebox('提示', '无法连接【ADODB.Stream】!无法读文件!') 
    return lb 
end if 
ADODB.Type = 1 //二进制数据Binary    
ADODB.Mode =3 //具有读/写权限    
ADODB.Open()    
ADODB.LoadFromFile(as_file)    
ADODB.Position = 0 //Position为0才能设置Charset    
ADODB.Type = 1 //blob数据      
lb = ADODB.Read() 
//清空缓冲区数据 
ADODB.flush()  
//关闭流 
ADODB.Close()  
destroy ADODB 
 
return lb 
end function 
 
        (2)写文件函数:integer f_writefile(blob ab, string as_file)
 
global function integer f_writefile (blob ab, string as_file); 
//pb9写文件内容的方法by yyoinge 20111104 
int li = 1 
oleObject ADODB 
ADODB = CREATE OLEObject    
if ADODB.ConnectToNewObject("ADODB.Stream")    <> 0 then 
    messagebox('提示', '无法连接【ADODB.Stream】!无法写文件!') 
    return -1 
end if 
ADODB.Type = 1 //二进制数据Binary    
ADODB.Mode =3 //具有读/写权限    
ADODB.Open()      
ADODB.Position = 0  
 
ADODB.Write(ab)  
try 
    ADODB.savetofile(as_file, 2) 
catch (oleruntimeerror er) 
    messagebox('提示', '无法写文件到【' + as_file + '】!~r~n可能的原因有:①文件路径不存在,②磁盘空间不够') 
    li = -1 //无法保存文件,可能的原因有:①as_file有误,②磁盘空间不够 
end try 
//清空缓冲区数据 
ADODB.flush()  
//关闭流 
ADODB.Close()  
destroy ADODB 
 
return li 
end function 
 
 
        (3)调用方法
 
//读取文件E:a.txt的内容,并写到文件E:aat.dat中 
f_writefile(f_readfile("E:a.txt"), "E:aat.dat") 
 
 

摘自 yyoinge的专栏
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐