希望清晰搞懂openfile里面行模式和流模式的定义

北京大丸子 2015-07-20 12:07:46
下面的这段代码,fileopen是采用流模式,并且replace!方式。但发现如果大于32765字节,使用filewrite也能把文件完全生成,我的问题是大于32765的文件采用循环模式将文件生成完整,是否与fileopen有关?如果有关,为何不用append,感觉更像是续传写文件的?

li_fileno  = FileOpen(as_filename, StreamMode!, Write!, Shared!, Replace!)
ll_fileptr = FileWrite(li_fileno, ablob)

DO WHILE ll_fileptr < len(ablob) AND Len(ablob) > 0
ablob = BlobMid(ablob, ll_fileptr + 1)
ll_fileptr = FileWrite(li_fileno, ablob)
LOOP
FileClose(li_fileno)
...全文
211 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2015-07-21
  • 打赏
  • 举报
回复
那为何我最上面的例子中,fileopen采用的是replace,但数据比较大,有N个32765,后面filewrite是采用追加的模式完成写操作,为何不用fileopen的append,而用replace? 答:用replace是替换掉原来的内容,用append是追加内容,如果有N个32765的话,后面采用的是不是追加和你用fileopen的打开方式有关。
北京大丸子 2015-07-20
  • 打赏
  • 举报
回复
从表面理解:replace不能像断点续传那样拼凑文件,而append更像能够断点续传。。。。
北京大丸子 2015-07-20
  • 打赏
  • 举报
回复
引用 3 楼 lzp_lrp 的回复:
具体是追加还是replace,是不是要看fileopen的打开模式 是的,具体的追加还是replace,需要看fileopen的打开模式
那为何我最上面的例子中,fileopen采用的是replace,但数据比较大,有N个32765,后面filewrite是采用追加的模式完成写操作,为何不用fileopen的append,而用replace?
北京大丸子 2015-07-20
  • 打赏
  • 举报
回复
引用 1 楼 lzp_lrp 的回复:
下面的这段代码,fileopen是采用流模式,并且replace!方式。但发现如果大于32765字节,使用filewrite也能把文件完全生成,我的问题是大于32765的文件采用循环模式将文件生成完整,是否与fileopen有关?如果有关,为何不用append,感觉更像是续传写文件的? FileWrite can write only 32,766 bytes at a time, which includes the string terminator character. If the length of variable exceeds 32,765 bytes, FileWrite writes the first 32,765 bytes and returns 32,765. Use FileWriteEx to handle variables that have more than 32,765 bytes. FileWrite一次只能写32766,和fileopen没有关系,如果是想一次写入,可以采用FileWriteEx这个函数,从pb10以后好像就有这个函数了
我用过filewriteEx这个函数,可能是我用的问题,写入的数据虽然可以超过32765,但写的数据不全。所以我现在还是用filewrite+循环读写的方式。 回到上面的问题,我觉得filewrite向文件里面写数据,具体是追加还是replace,是不是要看fileopen的打开模式?filewrite本身不定义这个吧?所以我感觉是fileopen的原因
WorldMobile 2015-07-20
  • 打赏
  • 举报
回复
下面的这段代码,fileopen是采用流模式,并且replace!方式。但发现如果大于32765字节,使用filewrite也能把文件完全生成,我的问题是大于32765的文件采用循环模式将文件生成完整,是否与fileopen有关?如果有关,为何不用append,感觉更像是续传写文件的? FileWrite can write only 32,766 bytes at a time, which includes the string terminator character. If the length of variable exceeds 32,765 bytes, FileWrite writes the first 32,765 bytes and returns 32,765. Use FileWriteEx to handle variables that have more than 32,765 bytes. FileWrite一次只能写32766,和fileopen没有关系,如果是想一次写入,可以采用FileWriteEx这个函数,从pb10以后好像就有这个函数了
WorldMobile 2015-07-20
  • 打赏
  • 举报
回复
具体是追加还是replace,是不是要看fileopen的打开模式 是的,具体的追加还是replace,需要看fileopen的打开模式

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧