路由器进入-转码器下载

2023年4月2日发(作者:vlc)
对文件读写的三种方法
1.C中
FILE*pFile=fopen("","w");
fwrite("",1,strlen(""),pFile");
//fseek(pFile,0,SEEK_SET);
//fwrite("ftp:",1,strlen("ftp:"),pFile);
//fwrite("",1,strlen(""),pFile");
fclose(pFile);*/
//fflush(pFile);
表头文件#include
FILE*fopen(constchar*path,constchar*mode);
函数说明参数path字符串包含欲打开的文件路径及文件名,参数mode字
符串则代表着流形态。
mode有下列几种形态字符串:
intfseek(FILE*stream,longoffset,intorigin);
第一个参数stream为文件指针
第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、
SEEK_END或SEEK_SET
SEEK_CUR:当前位置
SEEK_END:文件结尾
SEEK_SET:文件开头
其中SEEK_CUR,SEEK_END和SEEK_SET依次为1,2和0
:fwrite(buffer,size,count,fp);
(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
(2)size:要写入的字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)fp:目标文件指针。
intfread(void*ptr,intsize,intnitems,FILE*stream);
参数:用于接收数据的地址(指针)(ptr)
单个元素的大小(size)
元素个数(nitems)
提供数据的文件指针(stream)
:intfflush(FILE*stream)
功能:清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件
2.C++中
/*ofstreamofs("");
("",strlen(""));
();*/
要包括头文件"fstream.h"
中用CFile类,哈哈!简单好用
CFileDialogfileDlg(FALSE);
fileDlg.m_itle="我的文件保存对话框";
fileDlg.m_ilter="TextFiles(*.txt)0*.txt0AllFiles(*.*)0*.*00";
fileDlg.m_efExt="txt";
if(IDOK==l())
{
CFilefile(eName(),CFile::modeCreate|CFile::modeWrite);
("",strlen(""));
();
}
CFile操作详解
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如
指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高
效的代码,因而熟练的掌握文件操作是十分重要的。本文将对VisualC++中有关
文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细
的分析。
1.文件的查找
当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。
MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行
文件的查找。下面这段代码演示了这个类的最基本使用方法。
CStringstrFileTitle;
CFileFindfinder;
BOOLbWorking=le("C:windowssysbkup*.cab");
while(bWorking)
{
bWorking=xtFile();
strFileTitle=eTitle();
}
2.文件的打开/保存对话框
让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。
MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一
个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开
对话框,为FALSE时构造一个文件保存对话框。
在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT
风格,则在此对话框中可以进行多选操作。此时要重点注意为此CFileDialog对象
的m_ile分配一块内存,用于存储多选操作所返回的所有文件路径名,
如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件
打开对话框的使用方法。
CFileDialogmFileDlg(TRUE,NULL,NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
"AllFiles(*.*)|*.*||",AfxGetMainWnd());
CStringstr("",10000);
mFileDlg.m_ile=fer(10000);
eBuffer();
POSITIONmPos=rtPosition();
CStringpathName("",128);
CFileStatusstatus;
while(mPos!=NULL)
{
pathName=tPathName(mPos);
CFile::GetStatus(pathName,status);
}
3.文件的读写
文件的读写非常重要,下面将重点进行介绍。文件读写的最普通的方法是直
接使用CFile进行,如文件的读写可以使用下面的方法:
//对文件进行读操作
charsRead[2];
CFilemFile(_T(""),CFile::modeRead);
if(gth()<2)
return;
(sRead,2);
();
//对文件进行写操作
CFilemFile(_T(""),CFile::modeWrite|CFile::modeCreate);
(sRead,2);
();
();
虽然这种方法最为基本,但是它的使用繁琐,而且功能非常简单。我向你推
荐的是使用CArchive,它的使用方法简单且功能十分强大。首先还是用CFile声
明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可以非
常方便地存储各种复杂的数据类型了。它的使用方法见下例。
//对文件进行写操作
CStringstrTemp;
CFilemFile;
("d:",CFile::modeCreate|CFile::modeNoTruncate|CFile::mod
eWrite);
CArchivear(&mFile,CArchive::store);
ar<
();
();
//对文件进行读操作
CFilemFile;
if(("d:",CFile::modeRead)==0)
return;
CArchivear(&mFile,CArchive::load);
ar>>strTemp;
();
();
CArchive的<<和>>操作符用于简单数据类型的读写,对于CObject派生类的
对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和
WriteClass()还可以进行类的读写,如:
//存储CAboutDlg类
lass(RUNTIME_CLASS(CAboutDlg));
//读取CAboutDlg类
CRuntimeClass*mRunClass=ass();
//使用CAboutDlg类
CObject*pObject=mRunClass->CreateObject();
((CDialog*)pObject)->DoModal();
虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、
使用和管理,因此虽然很多VC入门的书上花费大量篇幅讲述文档/视结构,但我
建议你最好不要使用它的文档。关于如何进行文档/视的分离有很多书介绍,包
括非常著名的《VisualC++技术内幕》。
如果你要进行的文件操作只是简单的读写整行的字符串,我建议你使用
CStdioFile,用它来进行此类操作非常方便,如下例。
CStdioFilemFile;
CFileExceptionmExcept;
("d:",CFile::modeWrite,&mExcept);
CStringstring="Iamastring.";
tring(string);
();
4.临时文件的使用
正规软件经常用到临时文件,你经常可以会看到C:WindowsTemp目录下有
大量的扩展名为tmp的文件,这些就是程序运行是建立的临时文件。临时文件
的使用方法基本与常规文件一样,只是文件名应该调用函数GetTempFileName()
获得。它的第一个参数是建立此临时文件的路径,第二个参数是建立临时文件名
的前缀,第四个参数用于得到建立的临时文件名。得到此临时文件名以后,你就
可以用它来建立并操作文件了,如:
charszTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
GetTempPath(_MAX_PATH,szTempPath);
GetTempFileName(szTempPath,_T("my_"),0,szTempfile);
CFilem_tempFile(szTempfile,CFile::modeCreate|CFile::modeWrite);
charm_char='a';
m_(&m_char,2);
m_();
5.文件的复制、删除等
MFC中没有提供直接进行这些操作的功能,因而要使用SDK。SDK中的文件
相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它们
的用法很简单,可参考MSDN。
1,判断文件是否存在
access(filename,mode);
2,对于不同用途又不同的文件操作,其中API函数CreateFile()也是比较有用处
理方式,对于巨型文件很合适的其他的楼上的大都说了,不重复了.
[1]显示对话框,取得文件名
CStringFilePathName;
CFileDialogdlg(TRUE);///TRUE为OPEN对话框,FALSE为S***EAS对话框
if(l()==IDOK)
FilePathName=hName();
相关信息:CFileDialog用于取文件名的几个成员函数:
假如选择的文件是C:
则(1)GetPathName();取文件名全称,包括完整路径。取回
C:
(2)GetFileTitle();取文件全名:
(3)GetFileName();取回TEST
(4)GetFileExt();取扩展名EXE
[2]打开文件
CFilefile("C:",CFile::modeRead);//只读方式打开
//CFile::modeRead可改为CFile::modeWrite(只写),
//CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFilefile;
("C:",CFile::modeCreate|Cfile::modeWrite);
}
[3]移动文件指针
(100,CFile::begin);///从文件头开始往下移动100字节
(-50,CFile::end);///从文件末尾往上移动50字节
(-30,CFile::current);///从当前位置往上移动30字节
Begin();///移到文件头
End();///移到文件尾
[4]读写文件
读文件:
charbuffer[1000];
(buffer,1000);
写文件:
CStringstring("自强不息");
(string,8);
[5]关闭文件
();
HANDLECreateFile(
LPCTSTRlpFileName,//指向文件名的指针
DWORDdwDesiredAccess,//访问模式(写/读)
DWORDdwShareMode,//共享模式
LPSECURITY_ATTRIBUTESlpSecurityAttributes,//指向安全属性的指针
DWORDdwCreationDisposition,//如何创建
DWORDdwFlagsAndAttributes,//文件属性
HANDLEhTemplateFile//用于复制文件句柄
);
参数列表
lpFileNameString要打开的文件的名字
dwDesiredAccessLong如果为GENERIC_READ表示允许对设备进行读访问;
如果为GENERIC_WRITE表示允许对设备进行写访问(可组合使用);如果为零,
表示只允许获取与一个设备有关的信息
dwShareModeLong,零表示不共享;FILE_SHARE_READ和/或
FILE_SHARE_WRITE表示允许对文件进行共享访问
lpSecurityAttributesSECURITY_ATTRIBUTES,指向一个SECURITY_ATTRIBUTES
结构的指针,定义了文件的安全特性(如果操作系统支持的话)
dwCreationDispositionLong,下述常数之一:
CREATE_NEW创建文件;如文件存在则会出错
CREATE_ALWAYS创建文件,会改写前一个文件
OPEN_EXISTING文件必须已经存在。由设备提出要求
OPEN_ALWAYS如文件不存在则创建它
TRUNCATE_EXISTING讲现有文件缩短为零长度
dwFlagsAndAttributesLong,一个或多个下述常数
FILE_ATTRIBUTE_ARCHIVE标记归档属性
FILE_ATTRIBUTE_COMPRESSED将文件标记为已压缩,或者标记为文件在目
录中的默认压缩方式
FILE_ATTRIBUTE_NORMAL默认属性
FILE_ATTRIBUTE_HIDDEN隐藏文件或目录
FILE_ATTRIBUTE_READONLY文件为只读
FILE_ATTRIBUTE_SYSTEM文件为系统文件
FILE_FLAG_WRITE_THROUGH操作系统不得推迟对文件的写操作
FILE_FLAG_OVERLAPPED允许对文件进行重叠操作
FILE_FLAG_NO_BUFFERING禁止对文件进行缓冲处理。文件只能写入磁盘卷
的扇区块
FILE_FLAG_RANDOM_ACCESS针对随机访问对文件缓冲进行优化
FILE_FLAG_SEQUENTIAL_SCAN针对连续访问对文件缓冲进行优化
FILE_FLAG_DELETE_ON_CLOSE关闭了上一次打开的句柄后,将文件删除。特
别适合临时文件
更多推荐
seek_set
发布评论