文件操作函数

一、文件操作函数

1、GetFileOpenName(title,filePathName,fileName,extension,filter,initDir):文件打开对话框

   GetFileSaveName(title,filePathName,fileName,extension,filter,initDir):文件保存对话框

  参数说明:title:对话框标题

       filePathName:存储将要打开文件的路径

       fileName:存储将要打开文件的文件名

       extension:需要打开文件扩展名

       filter:过滤文件的类型

       initDir:文件打开对话框初始化的路径

   例:GetFileOpenName("打开文件",filePathName,fileName,"doc;Excel;txt","File(*.doc;*.excel;*.txt),*.doc;*.excel;*.txt","c:")

     GetFileOpenName("打开文件",filePathName,fileName,"doc;Excel;txt","File(*.doc;*.excel;*.txt),*.doc;*.excel;*.txt","c:")
2、FileOpen(filePathName,fileMode,fileAccess,fileLock,writeMode):文件打开函数(读、写)

  参数说明:filePathName:要打开(读写)的文件地址

       fileMode:文件读写的模式:StreamMode!:流模式读写;LineMode:行模式读写(Default)

       fileAccess:文件读写方式:Read!(Default)、Write!

       fileLock:文件读写锁定方式:LockReadWrite!(Default)、LockRead!、LockWrite!、Shared!

       writeMode:文件写入模式:Append!:追加(Default);Replace!:替换(文件写时用到)

  例:li_open = FileOpen(filePathName,StreamMode!,Read!,LockReadWrite!)
3、FileRead(li_open,variable):将文件filePathName中的内容读入至变量variable中
4、FileWrite(li_open,variable):将变量variable的内容写入至文件filePathName中
5、FileSeek(li_open,-10/10,FromBeginning!/FromEnd!/FromCurrent!):文件内容查找(从开始位置/结束位置/当前位置,向前/后10个字节出查找)
6、FileCopy(sourceFile,targetFile,True/False):文件复制(将源文件sourceFile复制为目标文件targetFile;True:覆盖;False:不覆盖)
7、FileExist(filePathName):判断文件是否存在
8、FileDelete(filePathName):删除指定文件

二、FileOpen与FileRead及FileWrite的应用(FileRead、FileWrite文件读写时,以StreamMode!(流)的方式读写时,每次只能读写32765字节的数据,所以操作时需要进行判断)

1、FileOpen与FileRead事例

//定义函数gf_read_file(string ls_filePathName) 返回值为:string
//函数体如下:
//定义变量
string ls_fileName
int li_open,li_reads,li
long ll_fileLen
blob lb_read,gb_read

//打开文件
//ls_filePathName = "d:update.sql"
//可以利用GetFileOpenName()获取需要打开的文件
//GetFileOpenName("打开文件",ls_filePathName,ls_fileName,"sql","File(*.sql),*.sql","c:")
li_open = fileOpen(ls_filePathName,StreamMode!,Read!,lockReadWrite!)
//文件内容的大小(字节)
ll_fileLen = FileLength(ls_filePathName) 
//文件大小的判定,从而设定需要读取该文件的次数
if ll_fileLen>32765 then
    if mod(ll_fileLen,32765) = 0 then
        li_reads = ll_fileLen/32765
    else
        li_reads = ll_fileLen/32765 + 1
    end if
else
    li_reads = 1
end if
//清空变量
setnull(lb_read)
setnull(gb_read)

//文件读取
for li = 1 to li_reads
    if fileRead(li_open,lb_read) = -1 then
        return ""
    else
        gb_read = gb_read + lb_read
    end if
next
FileClose(li_open)

return string(gb_read) //文件内容读入得变量(blob类型)
原文地址:https://www.cnblogs.com/lvk618/p/3549053.html