设为首页 加入收藏

TOP

PB9读写大容量文件的方法
2014-11-23 19:20:06 来源: 作者: 【 】 浏览:33
Tags: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")



摘自 yyoinge的专栏
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SYBASE数据库操作笔记 下一篇Sybase函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: