C/C++关于文件的读写操作以及文件的打开和保存

通过近来的学习,总结一下关于文件的读写操作以及文件的打开和保存的方法。

一、文件的读写操作:

(1)C语言对文件的读写操作

在C语言中,对文件的读写操作是用FILE结构体和常用的对文件操作的函数实现的,下面总结一下C语言中对文件操作的常用函数:

fopen()   打开以文件名指定的文件

fwrite()  写文件

fread()  读文件

fseek()  移动文件的指针到新的位置通过该函数的参数设定的偏移量和初始位置

rewind()  移动文件的指针到文件流的开始位置,在通常情况下可用fseek()实现相同的功能,但二者有区别

ftell()  获得当前文件指针的位置,常用该函数获得文件的文件流的长度

fflush()  刷新缓冲区中的内容,当文件写入时直接将文件流的内容从缓冲区写入磁盘,当读取文件时直接将磁盘文件写入缓冲区,而不必等程序运行结束或关闭程序。

fclose()  关闭文件

memset()  在一段内存块中填充某个给定的值

示例代码如下:

/**********************************************************
 *                C语言实现文件写操作                                 *
 ***********************************************************/

FILE *pFile=fopen("CLanguage.txt","w");
fwrite("CLanguage",1,strlen("CLanguage"),pFile);
//fseek(pFile,0,SEEK_SET);
//fwrite("实现文件写操作",1,strlen("实现文件写操作"),pFile);
fclose(pFile);

/**********************************************************
 *                C语言实现文件读操作                                 *
 ***********************************************************/

FILE *pFile=fopen("CLanguage.txt","r");
 //char ch[100];
 //memset(ch,0,100);
 //fread(ch,1,100,pFile);
 //MessageBox(ch);
 char* pBuf;
 int length;
 fseek(pFile,0,SEEK_END);
 length=ftell(pFile);
 pBuf=new char[length+1];
 //fseek(pFile,0,SEEK_SET);
 rewind(pFile);
 fread(pBuf,1,length,pFile);
 pBuf[length]=0;
 MessageBox(pBuf);
 fclose(pFile);

注意:在用C语言实现文件的读操作时,要注意文件的指针位置。而且还要注意文本文件和二进制文件的区别

(2)C++实现对文件的读写操作

用C++语言实现文件的读写操作,要用到ofstream类ifstream类,用该类的对象调用其成员函数Write()Read()实现文件的读写。

示例代码如下:

/**********************************************************
 *                C++实现文件写操作                                 *
 ***********************************************************/
 ofstream ofs("C++Language.txt");
 ofs.write("C++Language",strlen("C++Language"));
 ofs.close();

/**********************************************************
 *                C++实现文件读操作                                 *
 ***********************************************************/
 ifstream ifs("C++Language.txt");
 char ch[100];
 memset(ch,0,100);
 ifs.read(ch,100);
 MessageBox(ch);
 ifs.close();

注意:用C++实现文件的读写操作时,由于用到了ofstream类和ifstream类,所以要包含该类的头文件:

#include <fstream>
using namespace std;

(3)Win32 API函数实现文件的读写操作

用Win32 API函数实现文件的读写操作常用的函数如下:

CreateFile()

WriteFile()

ReadFile()

CloseHandle()

示例代码如下:

/**********************************************************
 *                Win32 API实现文件写操作                                 *
 ***********************************************************/
 HANDLE FileHandle;
 FileHandle=CreateFile("Win32 API.txt",GENERIC_WRITE,0,NULL,CREATE_NEW,
  FILE_ATTRIBUTE_NORMAL,NULL);
 DWORD dwWrites;
 WriteFile(FileHandle,"Win32 API Function",strlen("Win32 API Function"),
  &dwWrites,NULL);
 CloseHandle(FileHandle);

/**********************************************************
 *                Win32 API实现文件读操作                                 *
 ***********************************************************/
 HANDLE FileHandle;
 FileHandle=CreateFile("Win32 API.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,
  FILE_ATTRIBUTE_NORMAL,NULL);
 DWORD dwReads;
 char ch[100];
 ReadFile(FileHandle,ch,100,&dwReads,NULL);
 ch[dwReads]=0;
 MessageBox(ch);
 CloseHandle(FileHandle);

(4)MFC实现文件的读写操作

用MFC实现文件的读写操作,要用到CFile类,该类的构造函数和成员函数会完成一系列的文件操作的相关工作。

示例代码如下:

**********************************************************
 *                MFC实现文件写操作                                 *
 ***********************************************************/
 CFile file("mfc.txt",CFile::modeCreate|CFile::modeWrite);
 file.Write("Hello!阿波",strlen("Hello!阿波"));
 file.Close();

/**********************************************************
 *                MFC实现文件读操作                                 *
 ***********************************************************/
 CFile file("mfc.txt",CFile::modeRead);
 DWORD filelenth;
 filelenth=file.GetLength();
 char* pBuf=new char[filelenth+1];
 pBuf[filelenth]=0;
 file.Read(pBuf,filelenth);
 MessageBox(pBuf);
 file.Close();
 delete pBuf;

二、文件的打开和保存

文件的打开和保存会弹出文件打开和保存对话框,所以要用到CFileDialog类实现文件的打开和保存。在CFielDialog类的运用中,经常用到OPENFILENAME结构体,在该结构体中,有相关的变量可以设置文件打开和保存对话框的相关设置工作(如:对话框标题的设置、默认文件扩展名的添加、过滤器的设置等)。

示例代码如下:

/**********************************************************
 *         文件对话框操作——保存文件                      *
 ***********************************************************/
 CFileDialog fileDlg(FALSE);
 fileDlg.m_ofn.lpstrTitle="我的文件保存对话框";//对话框标题
 fileDlg.m_ofn.lpstrFilter="TextFile(*.txt)\0*.txt\0AllFile(*.*)\0*.*\0\0";//过滤器的设置
 fileDlg.m_ofn.lpstrDefExt="txt";//保存文件默认扩展名
 if(IDOK==fileDlg.DoModal())
 {
  CFile file(fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
  file.Write("文件保存对话框",strlen("文件保存对话框"));
  file.Close();
 }

/**********************************************************
 *         文件对话框操作——打开文件                      *
 ***********************************************************/
 CFileDialog fileDlg(TRUE);
 fileDlg.m_ofn.lpstrTitle="我的文件打开对话框";
 fileDlg.m_ofn.lpstrFilter="TextFile(*.txt)\0*.txt\0AllFile(*.*)\0*.*\0\0";
 
 if(IDOK==fileDlg.DoModal())
 {
  CFile file(fileDlg.GetFileName(),CFile::modeRead);
  DWORD fileLength;
  fileLength=file.GetLength();
  char* pBuf=new char[fileLength+1];
  pBuf[fileLength]=0;
  file.Read(pBuf,fileLength);
  MessageBox(pBuf);
  delete pBuf;
  file.Close();
 }

时间: 2024-10-05 23:49:54

C/C++关于文件的读写操作以及文件的打开和保存的相关文章

php学习基础-文件系统(二) 文件读写操作、文件资源处理

一.文件的打开与关闭 /* *读取文件中的内容 * file_get_contents(); //php5以上 * file() * readfile(); * * 不足:全部读取, 不能读取部分,也不能指定的区域 * * fopen() * fread() * fgetc() * fgets() * * * * * 写入文件 * file_put_contents("URL", "内容字符串"); //php5以上 * 如果文件不存在,则创建,并写入内容 * 如果

使用shell脚本简单模拟对特定文件同时读写操作

使用shell脚本简单模拟对特定文件同时读写操作文件内容的格式:field1    ,       field2    , field3    ,       field4以,为分隔符,但是存在空格. 脚本用法如下: ./check_write_read.sh 10 输出结果: Thu Apr 27 19:59:44 CST 2017:Read operation finished 670 Thu Apr 27 19:59:44 CST 2017:Write operation finished

IO流文件的读写操作

字符流有两个抽象类:Writer   Reader.其对应子类FileWriter,FileReader可实现文件的读写操作 同样,字节流也有两个抽象类:InputStream OutputStream.其对应子类有FileInputStream,FileOutputStream可实现文件读写 IO流中的重要方法:read()方法返回-1,readLine方法返回null.用法列如:while((line=br.readLine())!=null).Scanne类中的hasNext()方法如果此

File --文件的读写操作

File --文件的读写操作------------------- 1. 通过数组实现对一组数据的写入 1 package day01; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6 7 /** 8 * 批量写入一组字节 9 * @author Administrator 10 * 11 */ 12 public class

【Python】Python对文件的读写操作

刚刚接触Python,感觉其对文件的操作还是很方便的.下面是我入门Python对文件操作的一个简单程序,希望对初学者有所帮助. test.py def processFile(inputFile, outputFile): #定义一个函数 fin = open(inputFile, 'r') #以读的方式打开文件 fout = open(outputFile, 'w') #以写得方式打开文件 for eachLine in fin: #读取文件的每一行 line = eachLine.strip

INI 文件的读写操作

在C#中对INI文件进行读写操作,在此要引入using System.Runtime.InteropServices; 命名空间,具体方法如下: #region 变量 private static readonly string strFilePath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "App.ini";//INI文件路径 #endregion #region 私有方法 /// <summary> /

C# 运用StreamReader类和StreamWriter类实现文件的读写操作

对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter类.从这两个类的名称我们不难发现它们都是基于流的读写操作类. 我们可以通过File类的OpenText()方法来获取一个StreamReader对象,通过该对象我们可以实现对文本文件的读操作,方法如下:  Console.WriteLine("Reading the contents from the file

C++中对txt文件的读写操作

最近在做颜色校正部分的操作,发现对C++文件的读写遗忘了,特记于此:改程序是实现对txt文件的写入与读出:这是初级的写法,有时间在搞一下高级写法:注意最后别忘了close掉打开的文件! 程序如下: // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<iostream> #include<fstream> #includ

(六)kernel中文件的读写操作可以使用vfs_read()和vfs_write

需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read() vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明.下面介绍主要步骤 1. 打开文件 filp_open()在kernel中可以打开文件,其原形如下: strcut file