文件操作函数(精选4篇)
文件操作函数 篇1
1 类CFileFindExt的接口说明
2 调用说明及示例
2.1 对所有文件进行一个参数型函数批处理
2.2 对所有文件进行两个参数型函数批处理
2.3 搜索所有文件名
2.4 获取文件总数
2.5 获取文件名
摘要:在windows系统下, 用户要经常查找文件, 鉴于在文件系统较大且文件内容复杂时, 正常的搜索方法时间长, 使用系统开销大, 为了解决这个问题, 我们考虑使用CFileFind的扩展类CFileFindExt, 该类可以对指定目录下的所有文件进行搜索或相同的批处理操作, 同时也可根据搜索后得到的文件名对每个文件分别进行处理, 此方法可以在很大程度上提高效率。
关键词:CFileFindExt,调用说明,文件直找
参考文献
[1]Microsoft Visual C++6.0MFC Library Reference类库参考手册[美]Microsoft公司著.希望图书创作室译.本书版次, 1999.
文件操作函数 篇2
int GetFileSize(const char * pszFilePath)
{
FILE *fp = fopen(pszFilePath, “rb”);
VERIFY(fp != NULL);
const int nFile = _fileno(fp);
const int nFileLength = _filelength(nFile);
fclose(fp)
return nFileLength;
文件操作函数 篇3
1 一般情况
一般情况下,HttpSendRequest API函数可以上传字符的字节数据到服务器端的缓冲区,再由服务器端程序的接收程序从缓冲区取出数据来使用。
将API函数在模块级中定义(仅定义HttpSendRequest函数,其它用到的API函数读者可参照定义):
以上代码解释如下:
(1)通过InternetOpen、InternetConnect、HttpOpenRequest、HttpAddRequestHeaders API函数和IIS服务器建立连接,具体体现在sUrl参数上。通过ASP文档调用dll自编程序库实现和服务器连接,服务器接收数据的程序就是放在自编的dll程序库中。
(2)用HttpSendRequest API函数上传数据:lpszPostData表示要上传的数据;lPostDataLen表示要上传数据的字节长度;h HttpOpenRequest是连接服务器的句柄。
(3)最后用InternetCloseHandle API函数一级一级的关闭Internet连接和URL句柄。如果上传成功返回真,否则返回假。
2 问题分析与解决
通过上面代码可以了解到数据上传的过程。但是,在实际应用过程中经常会出现上传文件不成功的情况。主要存在两个问题:
2.1 postdat参数传来的不是字符串
在上载文件时,无论文件大小,如果是二进制数据,都不能正确的把数据上载上去。虽然postdat参数可以给二进制数组,但经过lpszPostData=poststr$&"&FileStart="&postdata语句已自动将其转化为字符。而HttpSendRequest API函数将其上传时自动进行了编码转换即将字符串由Unicode转换为系统的缺省码,相当于使用StrConv(lpszPostData,vbFromU-nicode)函数,所以求上传字节长度的时候要用l PostDataLen=LenB(StrConv(lpszPostData,vbFromUnicode))语句,则传上去的字节数完全正确。
但是若上传的全部是有效字符,服务器端经过StrConv(Vs_DataBuffer,vbUnicode)转换就可提取出所有字符并全部是正确的。
若上传有二进制非有效字符数据时,如上例中:lpszPostData=poststr$&"&FileStart="&postdata,其中poststr$是有效字符,作用是给服务器怎样操作的信号数据,postdata是二进制数据经过转换的字符串数据(实际是转换成乱码),这些字符串数据也可以上传上去,但是再经过服务器端的StrConv(Vs_DataBuffer,vbUnicode)转换后就不是原来的二进制数据了,虽然字节数目完全相同,内容却已完全不同,若不经StrConv函数转换实际也不是源文件内容了,这是因为StrConv函数是不能对非有效字符进行转换的。
通过以上分析,可以看出HttpSendRequest API函数上传二进制数是有限制的,为了能实现上传二进制数据,避免单双字节编码转换对程序带来的影响,将HttpSendRequest API函数进行别名重定义如下:
不知道读者注意没有,上述代码中的HttpSendRequestByte API函数的声明已经改变了。第4个参数的声明由一个String字符串变成了一个Any的参数,这样就可以给第4个参数Byte数组了。
只是为了表单做温度计时控制温度计的运行速度和上载无关,可以不去理会。
而HttpSendRequest API语句的调用改为:
经过这样的改进即可达到上传二进制的目的。服务器端的接收程序也无需用StrConv(Vs_DataBuffer,vbUnicode)转换。这样我们就解决了第一个问题。
2.2 postdat的字节数不能大于50MB
上传大文件时由于数组的大小是长整型。传送、接收都要用到数组,所以超出长整型范围就会溢出。
若是大文件可以在调用时用循环的办法每次取出不超过50MB字节的数据调用之。调用程序如下:
此方法对2G的文件进行测试已可以准确无误的将文件上载存入服务器磁盘。
为读者更好理解,给出服务器端接收数据对应程序:
自编函数GetBinaryData的功能是防止传上来的二进制数据从缓冲区取出时由于过大出现错误。
在服务器端程序创建一个类模块编写下列代码:
注意:HttpSendRequest函数上传数据的参数是字符类型,接收数据时必须进行StrConv(Vs_DataBuffer,vbUnicode)转换。如果上传数据的参数是二进制数组则无需进行转换。
3 结语
文件操作通用格式 篇4
打开文件:Open “文件名” for input/Output/append as #文件号
读取或者写入:主要针对顺序文件的命令.关闭文件:close 文件号 写文件的通用格式:
Open “文件名” for Output/append as #文件号
Print/Write#文件号,要写入的内容
Close #1
两个注意事项:
print后面表达式的分号和逗号
Print和Write的区别
读文件的通用格式:
1)打开用于读的文件格式固定:
Open “文件名”forinput as #文件号
2)读的语句分三种情况:
①若读的内容是有固定个数的数值,则读的时候联合使用For循环语句读,通用格式为:
Fori=起始值 to 终止值
Input #文件号,数组变量
nexti
②若读的内容是字符串,则读的时候要联合使用Do循环语句读
i若是按变量读(所谓按变量读,对于顺序文件来说,在文档中碰到逗号或空格则认为一个变量的内容结束),通用格式为:
Do while not eof(文件号)
input #文件号, 变量名
Text1.text=text1.text &变量名 &vbcrlf
Loop
ii若是按行读,通用格式为:
Do while not eof(文件号)
Line input #文件号, 变量名
Text1.text=text1.text &变量名 &vbcrlf(在文本框中按行显示)
Loop
iii若是按固定长度字符读,通用格式为:
Do while not eof(文件号)
变量名=input(取的字符长度, #文件号)
Text1.text=text1.text &变量名
【文件操作函数】推荐阅读:
操作文件10-27
Linux 如何查看与修改文件读写权限linux操作系统08-03
linux下Shell中调用/引用/包含脚本文件方法linux操作系统08-27
字符串操作函数07-17
图像文件与图形文件07-16
强制删除任意文件以及文件夹06-03
整理自己的文件和文件夹教案08-16
用QQ文件中转站“中转”大文件05-08
巧妙解决删除文件或文件夹出错故障08-16