对文件读写的三种方法
  1.C中
    FILE *pFile=fopen("1.txt","w");
fwrite(" http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile ");
//fseek(pFile,0,SEEK_SET);
//fwrite("ftp:",1,strlen("ftp:"),pFile);
//fwrite(" http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile ");
fclose(pFile);*/
//fflush(pFile);

表头文件 #include<stdio.h>

FILE * fopen(const char * path,const char * mode); 
  函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 
  mode有下列几种形态字符串:

int fseek( FILE *stream, long offset, int origin );
  第一个参数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:目标文件指针。

int fread(void *ptr, int size, int nitems, FILE *stream);
  参 数:用于接收数据的地址(指针)(ptr) 
  单个元素的大小(size) 
  元素个数(nitems)
  提供数据的文件指针(stream)

:int fflush(FILE *stream) 
         功 能: 清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件

2.C++中
/* ofstream ofs("4.txt");
ofs.write(" http://www.sunxin.org",strlen("http://www.sunxin.org "));
ofs.close();*/
         要包括头文件 "fstream.h"

3.MFC中 用CFile类,哈哈!简单好用
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle="我的文件保存对话框";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
  CFile file(fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
  file.Write(" http://www.sunxin.org",strlen("http://www.sunxin.org "));
  file.Close();
}

  CFile操作详解 
  各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。
  1.文件的查找 
  当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。下面这段代码演示了这个类的最基本使用方法。 
  CString strFileTitle; 
  CFileFind finder; 
  BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab"); 
  while(bWorking) 
  { 
  bWorking=finder.FindNextFile(); 
  strFileTitle=finder.GetFileTitle(); 
  } 
  2.文件的打开/保存对话框 
  让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。MFC的类CFileDialog用于实现这种功能。使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。 
  在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。下面这段程序演示了文件打开对话框的使用方法。 
  CFileDialog mFileDlg(TRUE,NULL,NULL, 
  OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, 
  "All Files (*.*)|*.*||",AfxGetMainWnd()); 
  CString str(" ",10000); 
  mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); 
  str.ReleaseBuffer(); 
  POSITION mPos=mFileDlg.GetStartPosition(); 
  CString pathName(" ",128); 
  CFileStatus status; 
  while(mPos!=NULL) 
  { 
  pathName=mFileDlg.GetNextPathName(mPos); 
  CFile::GetStatus( pathName, status ); 
  } 
  3.文件的读写 
  文件的读写非常重要,下面将重点进行介绍。文件读写的最普通的方法是直接使用CFile进行,如文件的读写可以使用下面的方法: 
  //对文件进行读操作 
  char sRead[2]; 
  CFile mFile(_T("user.txt"),CFile::modeRead); 
  if(mFile.GetLength()<2) 
  return; 
  mFile.Read(sRead,2); 
  mFile.Close(); 
  //对文件进行写操作 
  CFile mFile(_T("user.txt "), CFile::modeWrite|CFile::modeCreate); 
  mFile.Write(sRead,2); 
  mFile.Flush(); 
  mFile.Close(); 
  虽然这种方法最为基本,但是它的使用繁琐,而且功能非常简单。我向你推荐的是使用CArchive,它的使用方法简单且功能十分强大。首先还是用CFile声明一个对象,然后用这个对象的指针做参数声明一个CArchive对象,你就可以非常方便地存储各种复杂的数据类型了。它的使用方法见下例。 
  //对文件进行写操作 
  CString strTemp; 
  CFile mFile; 
  mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); 
  CArchive ar(&mFile,CArchive::store); 
  ar<<strTemp; 
  ar.Close(); 
  mFile.Close(); 
  //对文件进行读操作 
  CFile mFile; 
  if(mFile.Open("d:\\dd\\try.TRY",CFile::modeRead)==0) 
  return; 
  CArchive ar(&mFile,CArchive::load); 
  ar>>strTemp; 
  ar.Close(); 
  mFile.Close(); 
  CArchive的 << 和>> 操作符用于简单数据类型的读写,对于CObject派生类的对象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()还可以进行类的读写,如: 
  //存储CAboutDlg类 
  ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); 
  //读取CAboutDlg类 
  CRuntimeClass* mRunClass=ar.ReadClass(); 
  //使用CAboutDlg类 
  CObject* pObject=mRunClass->CreateObject(); 
  ((CDialog* )pObject)->DoModal(); 
  虽然VC提供的文档/视结构中的文档也可进行这些操作,但是不容易理解、使用和管理,因此虽然很多VC入门的书上花费大量篇幅讲述文档/视结构,但我建议你最好不要使用它的文档。关于如何进行文档/视的分离有很多书介绍,包括非常著名的《Visual C++ 技术内幕》。 
  如果你要进行的文件操作只是简单的读写整行的字符串,我建议你使用CStdioFile,用它来进行此类操作非常方便,如下例。 
  CStdioFile mFile; 
  CFileException mExcept; 
  mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); 
  CString string="I am a string."; 
  mFile.WriteString(string); 
  mFile.Close(); 
  4.临时文件的使用 
  正规软件经常用到临时文件,你经常可以会看到C:\Windows\Temp目录下有大量的扩展名为tmp的文件,这些就是程序运行是建立的临时文件。临时文件的使用方法基本与常规文件一样,只是文件名应该调用函数GetTempFileName()获得。它的第一个参数是建立此临时文件的路径,第二个参数是建立临时文件名的前缀,第四个参数用于得到建立的临时文件名。得到此临时文件名以后,你就可以用它来建立并操作文件了,如: 
  char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH]; 
  GetTempPath(_MAX_PATH, szTempPath); 
  GetTempFileName(szTempPath,_T ("my_"),0,szTempfile); 
  CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite); 
  char m_char='a'; 
  m_tempFile.Write(&m_char,2); 
  m_tempFile.Close(); 
  5.文件的复制、删除等 
  MFC中没有提供直接进行这些操作的功能,因而要使用SDK。SDK中的文件相关函数常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它们的用法很简单,可参考MSDN。

  1,判断文件是否存在
  access(filename,mode);
  2,对于不同用途又不同的文件操作,其中API函数CreateFile()也是比较有用处理方式,对于巨型文件很合适的其他的楼上的大都说了,不重复了.
  [1]显示对话框,取得文件名
  CString FilePathName;
  CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为S***E AS对话框
  if (dlg.DoModal() == IDOK)
  FilePathName=dlg.GetPathName();
  相关信息:CFileDialog 用于取文件名的几个成员函数:
  假如选择的文件是C:\WINDOWS\TEST.EXE
  则(1)GetPathName();取文件名全称,包括完整路径。取回C:\WINDOWS\TEST.EXE
  (2)GetFileTitle();取文件全名:TEST.EXE
  (3)GetFileName();取回TEST
  (4)GetFileExt();取扩展名EXE
  [2]打开文件
  CFile file("C:\HELLO.TXT",CFile::modeRead);//只读方式打开
  //CFile::modeRead可改为 CFile::modeWrite(只写),
  //CFile::modeReadWrite(读写),CFile::modeCreate(新建)
  例子:
  {
  CFile file;
  file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
  }
  [3]移动文件指针
  file.Seek(100,CFile::begin);///从文件头开始往下移动100字节
  file.Seek(-50,CFile::end);///从文件末尾往上移动50字节
  file.Seek(-30,CFile::current);///从当前位置往上移动30字节
  file.SeekToBegin();///移到文件头
  file.SeekToEnd();///移到文件尾
  [4]读写文件
  读文件:
  char buffer[1000];
  file.Read(buffer,1000);
  写文件:
  CString string("自强不息");
  file.Write(string,8);
  [5]关闭文件
  file.Close();

  HANDLE CreateFile(
  LPCTSTR lpFileName, //指向文件名的指针
  DWORD dwDesiredAccess, //访问模式(写/读)
  DWORD dwShareMode, //共享模式
  LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
  DWORD dwCreationDisposition, //如何创建
  DWORD dwFlagsAndAttributes, //文件属性
  HANDLE hTemplateFile //用于复制文件句柄
  );
  参数列表 
  lpFileName String 要打开的文件的名字 
  dwDesiredAccess Long 如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息 
  dwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
  lpSecurityAttributes SECURITY_ATTRIBUTES, 指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)
  dwCreationDisposition Long,下述常数之一: 
  CREATE_NEW 创建文件;如文件存在则会出错 
  CREATE_ALWAYS 创建文件,会改写前一个文件 
  OPEN_EXISTING 文件必须已经存在。由设备提出要求 
  OPEN_ALWAYS 如文件不存在则创建它 
  TRUNCATE_EXISTING 讲现有文件缩短为零长度 
  dwFlagsAndAttributes Long, 一个或多个下述常数 
  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 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

C、C++和MFC中文件的操作相关推荐

  1. java中的文件_JAVA中文件的操作

    在java中,对文件(例如图片)进行操作,包括上传.修改.删除 一,文件上传 1.文件传到哪里,不仅可以保存在数据库中,也可以上传到远程服务器,文件保存的是文件的路径 2.文件上传都需要做什么?写那些 ...

  2. python36_第36 p,就这几个方法,Python中文件的操作

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第X篇文章,第二阶段的课程:Python基础知识:Python中文件的操作(下篇). 学习本课程,建议先看一遍:[计算机基础知识]课 ...

  3. php中文件读写总结,PHP中文件读写操作

    PHP中文件读写操作 PHP中提供了一系列的I/O函数,能简捷地实现我们所需要的功能,包括文件系统操作和目录操作(如"复制[copy]").下面给大家介绍的是基本的文件读写操作:( ...

  4. 文件操作函数java_java中文件的操作

    前言:java的读写操作是学java开发的必经之路,Java.io包中包括许多类提供许多有关文件的各个方面操作.下面就来总结下java的读写操作. 主要内容如下 1.字节流与字符流的区别 2.文件操作 ...

  5. java中文件的操作讲解

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...

  6. Python中文件的操作

    1.文件的基本操作 文件打开的格式: file = open(文件路径,读写模式) 文件路径:可以写相对路径,也可以写绝对路径 读写模式:r(读取) w(写入) a(追加) 文件打开后,必须关闭,否则 ...

  7. MFC中文件读写的几种方法

    MFC文件操作: 1.写文件 void CFileView::OnFileWrite() {// TODO: 在此添加命令处理程序代码//方法一/*//FILE *pFile = fopen(&quo ...

  8. MFC中使用sqlite3操作数据库 创建,插入数据,查询数据

    需要用到的文件有sqlite3.h .sqlite3.dll.sqlite3.lib.网上很多人分享下载地址这里不再赘述. 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选 ...

  9. MFC中对话框的操作

    ①在菜单栏上加一个按钮(Dialog),点击弹出对话框. 1.新建一个MFC项目,这里命名为sr,首先创建一个新的对话框,在资源视图里找到Dialog右键,Insert Dialog.出现新的对话框编 ...

最新文章

  1. SAP ABAP Netweaver系统的传输请求类型和原始系统的含义
  2. 书呆子rico_寻找设计和类型书呆子的清道夫
  3. 蓝桥杯2015初赛-三羊献瑞-枚举
  4. TCP/IP完整的基础介绍
  5. URLDecoder: Illegal hex characters in escape (%) pattern ...
  6. Socket选项之SO_RCVTIMEO 和SO_SNDTIMEO
  7. C# 3.0 新特性
  8. 【Vue案例三】使用v-if指令 / component标签实现组件的切换
  9. thinkphp 事件
  10. 具体解决VS“滴答数必须介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间”奇怪问题...
  11. react脚手架_react脚手架create-react-app安装与使用
  12. python删除指定字符_python删除字符串中指定字符的方法
  13. JavaOO 常用类
  14. python多个矩阵横向连接
  15. dubbo是长连接还是短连接_游戏宅的亲身体验,手柄还是物理连接好:雷蛇骑仕游戏手柄体验...
  16. Java If Else 语句
  17. 超简单,一行代码获取百度文库内容,附python百度文库exe下载工具
  18. 电商购物后台管理系统总结
  19. vue build打包后提示:Tip: built files are meant to be served over an HTTP server
  20. linux系统下已分好区的磁盘如何删除,linux下如何删除磁盘分区

热门文章

  1. linux怎样判断线程是否暂停_怎样判断股市是否会继续下跌?
  2. 电脑远程凭证不工作:解决
  3. ec20驱动_物联网基础:移远EC20固件升级
  4. python输入的字符串转换为对应的数字类型_Python合集之Python运算符(四)
  5. java 偏向锁 怎么用_Java锁升级、偏向锁、轻量级锁
  6. 牙齿间隙变大怎么办_牙齿之间的间隙越来越大怎么办?
  7. 中国石油大学(华东)计算机科学与技术,2017年中国石油大学(华东)函授本科计算机科学与技术专业...
  8. qgraphicsitem 复制副本_删除/删除/替换QGraphicsTextItem中的选定文本
  9. C语言和其他高级语言的最大的区别是什么?
  10. 【LeetCode笔记】15.三数之和(JAVA、双指针)