PB9读写大容量文件的方法

        在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")



猜你喜欢

转载自blog.csdn.net/yyoinge/article/details/6935768