文件操作

来源:互联网 发布:宁波软件开发 编辑:程序博客网 时间:2024/06/04 19:03
一:C语言文件读写
写文件:
FILE *pFile=fopen(“1.txt”,”w”);
//参数2:以字节为单位项的大小
//参数3:要被写入的项的最大数目
fwrite(“http://www.sunxin.org”,1,strlen(“http://www.sunxin.org”),pFile);
//移动文件指针到文件头
//fseek(pFile,0,SEEK_SET);
//再在文件指针处(文件头处)写入数据
//fwrite(“ftp:”,1,strlen(“ftp:”),pFile);
//刷新缓冲区数据
//fflush(pFile);
fclose(pFile);

读文件:
FILE *pFile=fopen(“1.txt”,”r”);
char ch[100];
//字符数组初始化为0
memset(ch,0,100);
fread(ch,1,100,pFile);
fclose(pFile);

如果不确定文件有多少字节,以下面这种方式读取:
FILE *pFile=fopen(“1.txt”,”r”);
char *pBuf;
//将文件指针移动到文件尾
fseek(pFile,0,SEEK_END);
//ftell()函数获取文件指针的位置索引,文件尾的索引即文件长度
int len=ftell(pFile);
//加1为了在最后加结束字符”\0”
pBuf=new char[len+1];
//文指针重新移动到文件头,读取数据从文件头开始
rewind(pFile);
fread(pBuf,1,len,pFile);
//字符末尾添加”\0”
pBuf[len]=0;
fclose(pFile);

关于文件的二进制问题,下面做一个示例:
将一个整数98341写入文件,在文件中显示为98341
如果这样写:
FILE *pFile=fopen(“3.txt”,”w”); 
  int i=98341; 
fwrite(&i,4,1,pFile);
fclose(pFile);
结果出来是乱码。98431会转换为二进制形式存储,
再读取时,二进制又转换为ASC码的对应字符

FILE *pFile=fopen(“3.txt”,”w”); 
  int i=98341; 
//可用itoa函数直接转换为字符串
//参数1:源数据;参数2:目的数据;参数3:十进制形式
//itoa(i,ch,10);

//将数拆分为5个单独的数,转换为ASC码
//数字0的ASC码为48,则1为1+48, 2为2+48,以此类推
  char ch[5];
ch[0]=9+48; 
  ch[1]=8+48; 
  ch[2]=3+48; 
  ch[3]=4+48; 
  ch[4]=1+48;
fwrite(ch,1,5,pFile);
fclose(pFile);


二:C++对文件的操作
包含头文件
#include <fstream.h>


写入:
ofstream ofs(“4.txt”);
ofs.write(“http://www.sunxin.org”,strlen(“http://www.sunxin.org”));
ofs.close();

读取:
ifstream ifs(“4.txt”);
char ch[100];
memset(ch,0,100);
ifs.read(ch,100);
ifs.close();

三、WIN32 API对文件的操作
写入:
HANDLE hFile;
//创建可写入的文件
hFile=CreateFile(“5.txt”,GENERIC_WRITE,0,NULL,CREATE_NEW,
FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwWrites;  //用来接收实际写入到文件的字节数
WriteFile(hFile,”http://www.sunxin.org”,strlen(“http://www.sunxin.org”),
&dwWrites,NULL);
CloseHandle(hFile);

读取:
HANDLE hFile;
//打开文件
hFile=CreateFile(“5.txt”,GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
//char ch[100];
DWORD dwReads;   //接收实际读到的字节数
ReadFile(hFile,ch,100,&dwReads,NULL);
//ch[dwReads]=0;
CloseHandle(hFile);
//MessageBox(ch);


四:MFC操作文件(封装很多函数,功能强大)
写入:
CFile file(“6.txt”,CFile::modeCreate | CFile::modeWrite);
file.Write(“http://www.sunxin.org”,strlen(“http://www.sunxin.org”));
file.Close();

读取:
CFile file(“6.txt”,CFile::modeRead);
char *pBuf;   //用来接收读取的数据
DWORD dwFileLen;
//获得文件长度
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();

原创粉丝点击