`

掌握文本文件读写的方法

阅读更多

了解二进制文件的读写方法

C++文件流:
fstream  // 文件流
ifstream  // 输入文件流
ofstream  // 输出文件流

//创建一个文本文件并写入信息
//同向屏幕上输出信息一样将信息输出至文件
#include<iomanip.h>
#include<fstream.h>
void main()
{
  ofstream f1("d:\\me.txt");           //打开文件用于写,若文件不存在就创建它
  if(!f1)return;                 //打开文件失败则结束运行
  f1<<setw(20)<<"姓名:"<<"廉东方"<<endl;     //使用插入运算符写文件内容
  f1<<setw(20)<<"家庭地址:"<<"河南郑州"<<endl;
  f1.close();                   //关闭文件
}
运行后打开文件d:\me.txt,其内容如下:
       姓名:廉东方
     家庭地址:河南郑州

文件操作:
打开文件
  文件名
    注意路径名中的斜杠要双写,如:
    "D:\\MyFiles\\ReadMe.txt"
  文件打开方式选项:
    ios::in    = 0x01, //供读,文件不存在则创建(ifstream默认的打开方式)
    ios::out    = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)
    ios::ate    = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
    ios::app    = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
    ios::trunc   = 0x10, //在读写前先将文件长度截断为0(默认)
    ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app联合使用
    ios::noreplace = 0x40, //文件存在时产生错误,常和out联合使用
    ios::binary  = 0x80  //二进制格式文件
  文件保护方式选择项:
    filebuf::openprot;   //默认的兼容共享方式
    filebuf::sh_none;    //独占,不共享
    filebuf::sh_read;    //读共享
    filebuf::sh_write;   //写共享
  打开文件的方法
    调用构造函数时指定文件名和打开模式
    ifstream f("d:\\12.txt",ios::nocreate);         //默认以 ios::in 的方式打开文件,文件不存在时操作失败
    ofstream f("d:\\12.txt");                //默认以 ios::out的方式打开文件
    fstream f("d:\\12.dat",ios::in|ios::out|ios::binary); //以读写方式打开二进制文件
    使用Open成员函数
    fstream f;
    f.open("d:\\12.txt",ios::out);             //利用同一对象对多个文件进行操作时要用到open函数
检查是否成功打开
  成功:
    if(f){...}       //对ifstream、ofstream对象可用,fstream对象不可用。
    if(f.good()){...}
  失败:
    if(!f){...}       // !运算符已经重载
    if(f.fail()){...}
读写操作
  使用<<,>>运算符
  只能进行文本文件的读写操作,用于二进制文件可能会产生错误。
  使用函数成员 get、put、read、write等
  经常和read配合使用的函数是gcount(),用来获得实际读取的字节数。
读写二进制文件注意事项
  打开方式中必须指定ios::binary,否则读写会出错
  用read\write进行读写操作,而不能使用插入、提取运算符进行操作,否则会出错。
  使用eof()函数检测文件是否读结束,使用gcount()获得实际读取的字节数
关闭文件
  使用成员函数close,如:
  f.close(); 
  利用析构函数
  对象生命期结束时会检查文件是否关闭,对没有关闭的文件进行关闭操作。
随机读写文件
  通过移动文件读写指针,可在文件指定位置进行读写。
  seekg(绝对位置);      //绝对移动,    //输入流操作
  seekg(相对位置,参照位置);  //相对操作
  tellg();          //返回当前指针位置
  seekp(绝对位置);      //绝对移动,    //输出流操作
  seekp(相对位置,参照位置);  //相对操作   
  tellp();          //返回当前指针位置
  参照位置:
  ios::beg  = 0       //相对于文件头
  ios::cur  = 1       //相对于当前位置
  ios::end  = 2       //相对于文件尾
读写文本文件的示例
//为能够正确读出写入文件的各数据,各数据间最好要有分隔
#include<fstream.h>
void main()
{
  fstream f("d:\\try.txt",ios::out);
  f<<1234<<' '<<3.14<<'A'<<"How are you"; //写入数据
  f.close();
  f.open("d:\\try.txt",ios::in);
  int i;
  double d;
  char c;
  char s[20];
  f>>i>>d>>c;               //读取数据
  f.getline(s,20);
  cout<<i<<endl;             //显示各数据
  cout<<d<<endl;
  cout<<c<<endl;
  cout<<s<<endl;
  f.close();
}
运行结果:
1234
3.14
A
How are you
Press any key to continue
显示文本文件的内容
//使用get()一次读一个字符--------------------------------方案一
#include<fstream.h>
void main()
{
  ifstream fin("d:\\简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!\n";
    return;
  }
  char c;
  while((c=fin.get())!=EOF)cout<<c;    //注意结束条件的判断
  fin.close();
}
//使用get(char *,int n,char delim='\n')一次读多个字符----方案二
//巧妙利用文本文件中不会有字符'\0'的特点进行读取
#include<fstream.h>
void main()
{
  ifstream fin("d:\\简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!\n";
    return;
  }
  char c[80];
  while(fin.get(c,80,'\0')!=NULL)cout<<c; //注意结束条件的判断
  fin.close();
}
//使用read(char *,int n)读文件---------------------------方案三
#include<fstream.h>
void main()
{
  ifstream fin("d:\\简介.txt",ios::nocreate);
  if(!fin){
    cout<<"File open error!\n";
    return;
  }
  char c[80];
  while(!fin.eof())            //判断文件是否读结束
  {
    fin.read(c,80);
    cout.write(c,fin.gcount());
  }
  fin.close();
}
拷贝文件
//二进制文件操作示例
#include<fstream.h>
void main()
{
  ifstream fin("C:\\1.exe",ios::nocreate|ios::binary);
  if(!fin){
    cout<<"File open error!\n";
    return;
  }
  ofstream fout("C:\\2.exe",ios::binary);
  char c[1024];
  while(!fin.eof())
  {
    fin.read(c,1024);
    fout.write(c,fin.gcount());
  }
  fin.close();
  fout.close();
  cout<<"Copy over!\n";
}
分享到:
评论

相关推荐

    Android平台的txt文本文件读写操作

    ### Android平台的txt文本文件读写操作 #### 一、引言 在Android应用程序开发过程中,文本文件(如.txt格式)的读写操作是常见需求之一。...希望本文能帮助读者更好地理解和掌握Android文本文件读写的技巧。

    Java 读写文件文本文件的示例

    根据给定的文件信息,我们将深入探讨Java读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...

    linux下的文本文件读写操作

    在进行文本文件读写时,通常需要先打开文件。使用`fopen`函数可以完成这一任务: ```c FILE *fopen(const char *filename, const char *mode); ``` `filename`是文件名,`mode`是操作模式,如"r"(只读)、"w"(写入...

    文本文件和二进制文件区别读写.rar

    文本文件读写的一个关键特点是行结束符,如CRLF(回车换行)在Windows系统中,LF(换行)在Unix/Linux系统中。在跨平台操作时,需要特别注意这些差异。而二进制文件则没有固定的行结束符概念,它直接保存原始数据的...

    文件读写方法

    总之,理解并熟练掌握文件读写方法是每个程序员的基本技能,无论是处理文本数据还是二进制数据,都需要根据具体需求选择合适的方法。通过合理运用,我们可以高效地管理程序中的数据,实现数据的持久化存储。

    VBNET逐行读写文本文件

    在逐行读取文本文件时,可以使用`File.ReadLine()`方法,它会返回文件中的下一行内容,直到文件末尾。以下是一个简单的读取示例: ```vbnet Dim fileNumber As Integer = FreeFile() Try FileOpen(fileNumber, "C:...

    C#读写文本文件(不会产生乱码)[初学者用]

    在C#编程中,读写文本文件是常见的操作,尤其对于初学者来说,...总之,理解和掌握C#中的文件读写操作及其编码处理,是成为一名合格的C#开发者的基础。通过实践和学习,初学者能够编写出高效、安全的文本文件处理代码。

    c++读写文本文件

    ### C++中的文本文件读写 #### 一、概述 在C++中,对文本文件进行读写是一项基本且常用的功能。本文将详细介绍如何利用C++标准库中的`fstream`来实现文本文件的读写操作。 #### 二、基础知识 在深入探讨文本文件...

    文本配置文件读写

    标题中的“文本配置文件读写”指的是在编程中处理配置文件的过程,这些文件通常用于存储应用程序的设置或参数,方便程序在运行时调用。配置文件格式多样,但本话题聚焦于“ini”文件,这是一种常见的文本格式,由节...

    MFC对文本文档的读写

    `CTextFile` 类提供了`fprintf()` 和 `scanf()` 类似的接口,使得文本文件的读写更加直观: ```cpp CTextFile textFile; if (!textFile.Open("example.txt", CFile::modeCreate | CFile::modeWrite)) { // 处理...

    Android 文本文件操作类(正则匹配文本、读写文本文件、取中间文本)

    总结来说,Android开发中的文本文件操作涉及到正则表达式的应用、文件的读写以及文本的提取。通过合理封装和使用这些功能,开发者能够有效地处理和管理应用程序的数据存储。在实际开发中,理解并熟练掌握这些技术...

    基于Python PyQt5实现的文件操作Demo,含文本文件读写、二进制文件流化读写、原始字节数据读写、目录与文件操作

    1. **文本文件读写**: 在Python中,我们通常使用内置的`open()`函数来处理文本文件。以读模式('r')打开文件用于读取,写模式('w')用于覆盖写入,追加模式('a')则会在文件末尾添加内容。在PyQt5环境下,虽然...

    WBDC.rar_c text word count_单词检索_文本 检索 visual_文本文件读写

    本文将基于给定的标题“WBDC.rar_c text word count_单词检索_文本检索 visual_文本文件读写”和描述,深入探讨相关知识点,包括C语言实现文本文件的读写、单词计数和检索,以及可视化的实现。 首先,让我们关注...

    fileOpt.rar_delphi文本文件_读写文件

    总的来说,Delphi中的文本文件读写操作并不复杂,通过TStreamReader和TStreamWriter类可以方便地实现。只要理解基本的文件操作概念和异常处理,你就能轻松应对大部分文件处理需求。在学习过程中,不断实践和调试代码...

    Delphi通过Memo读写文本文件和ini文件源码.rar

    本文将深入探讨如何使用Delphi通过Memo组件来实现文本文件和ini文件的读写操作。 首先,我们要了解Delphi中的Memo组件。Memo组件在界面上通常表现为一个多行文本框,用于显示或编辑大量文本。它在读写文本文件时...

    文件读写,实现了不同格式的文件读写

    在“Ch16 文件读写”这个章节中,可能包含了关于以上各种文件读写方式的详细教程和实例代码,帮助开发者掌握不同类型的文件操作技巧,提升编程能力。学习这部分内容对于任何IT从业者来说都是基础且重要的,无论是...

    文本文件提取分析_文件读写_文本分析_源码

    本项目“文本文件提取分析_文件读写_文本分析_源码”专注于使用Python语言,结合jieba库对中文文本进行高效的处理和分析。 首先,我们关注的是“文件读写”这一环节。在Python中,文件操作是通过内置的`open()`函数...

    C#程序设计实验8-文本文件读写

    实验的重点在于理解和应用文本文件读写的方法。在C#中,这通常涉及到`System.IO`命名空间中的类,如`File`和`StreamReader`或`StreamWriter`。例如,`File.ReadAllLines()`用于一次性读取文件的所有行,而`File....

    c语言文本文件读写操作示例代码

    ### C语言文本文件读写操作知识点详解 #### 一、引言 在C语言中,进行文件操作是一项基本且重要的技能。本篇文章将基于提供的示例代码,深入讲解如何使用C语言的标准库来实现文本文件的基本读写操作。具体包括`...

Global site tag (gtag.js) - Google Analytics