了解二进制文件的读写方法
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文本文件读写的技巧。
根据给定的文件信息,我们将深入探讨Java读写文件文本文件的关键知识点,这些知识点主要集中在文件的读取、写入以及流的复制等操作上。 ### Java读取文本文件 在Java中,读取文本文件通常涉及到使用`InputStream`...
在进行文本文件读写时,通常需要先打开文件。使用`fopen`函数可以完成这一任务: ```c FILE *fopen(const char *filename, const char *mode); ``` `filename`是文件名,`mode`是操作模式,如"r"(只读)、"w"(写入...
文本文件读写的一个关键特点是行结束符,如CRLF(回车换行)在Windows系统中,LF(换行)在Unix/Linux系统中。在跨平台操作时,需要特别注意这些差异。而二进制文件则没有固定的行结束符概念,它直接保存原始数据的...
总之,理解并熟练掌握文件读写方法是每个程序员的基本技能,无论是处理文本数据还是二进制数据,都需要根据具体需求选择合适的方法。通过合理运用,我们可以高效地管理程序中的数据,实现数据的持久化存储。
在逐行读取文本文件时,可以使用`File.ReadLine()`方法,它会返回文件中的下一行内容,直到文件末尾。以下是一个简单的读取示例: ```vbnet Dim fileNumber As Integer = FreeFile() Try FileOpen(fileNumber, "C:...
在C#编程中,读写文本文件是常见的操作,尤其对于初学者来说,...总之,理解和掌握C#中的文件读写操作及其编码处理,是成为一名合格的C#开发者的基础。通过实践和学习,初学者能够编写出高效、安全的文本文件处理代码。
### C++中的文本文件读写 #### 一、概述 在C++中,对文本文件进行读写是一项基本且常用的功能。本文将详细介绍如何利用C++标准库中的`fstream`来实现文本文件的读写操作。 #### 二、基础知识 在深入探讨文本文件...
标题中的“文本配置文件读写”指的是在编程中处理配置文件的过程,这些文件通常用于存储应用程序的设置或参数,方便程序在运行时调用。配置文件格式多样,但本话题聚焦于“ini”文件,这是一种常见的文本格式,由节...
`CTextFile` 类提供了`fprintf()` 和 `scanf()` 类似的接口,使得文本文件的读写更加直观: ```cpp CTextFile textFile; if (!textFile.Open("example.txt", CFile::modeCreate | CFile::modeWrite)) { // 处理...
总结来说,Android开发中的文本文件操作涉及到正则表达式的应用、文件的读写以及文本的提取。通过合理封装和使用这些功能,开发者能够有效地处理和管理应用程序的数据存储。在实际开发中,理解并熟练掌握这些技术...
1. **文本文件读写**: 在Python中,我们通常使用内置的`open()`函数来处理文本文件。以读模式('r')打开文件用于读取,写模式('w')用于覆盖写入,追加模式('a')则会在文件末尾添加内容。在PyQt5环境下,虽然...
本文将基于给定的标题“WBDC.rar_c text word count_单词检索_文本检索 visual_文本文件读写”和描述,深入探讨相关知识点,包括C语言实现文本文件的读写、单词计数和检索,以及可视化的实现。 首先,让我们关注...
总的来说,Delphi中的文本文件读写操作并不复杂,通过TStreamReader和TStreamWriter类可以方便地实现。只要理解基本的文件操作概念和异常处理,你就能轻松应对大部分文件处理需求。在学习过程中,不断实践和调试代码...
本文将深入探讨如何使用Delphi通过Memo组件来实现文本文件和ini文件的读写操作。 首先,我们要了解Delphi中的Memo组件。Memo组件在界面上通常表现为一个多行文本框,用于显示或编辑大量文本。它在读写文本文件时...
在“Ch16 文件读写”这个章节中,可能包含了关于以上各种文件读写方式的详细教程和实例代码,帮助开发者掌握不同类型的文件操作技巧,提升编程能力。学习这部分内容对于任何IT从业者来说都是基础且重要的,无论是...
本项目“文本文件提取分析_文件读写_文本分析_源码”专注于使用Python语言,结合jieba库对中文文本进行高效的处理和分析。 首先,我们关注的是“文件读写”这一环节。在Python中,文件操作是通过内置的`open()`函数...
实验的重点在于理解和应用文本文件读写的方法。在C#中,这通常涉及到`System.IO`命名空间中的类,如`File`和`StreamReader`或`StreamWriter`。例如,`File.ReadAllLines()`用于一次性读取文件的所有行,而`File....
### C语言文本文件读写操作知识点详解 #### 一、引言 在C语言中,进行文件操作是一项基本且重要的技能。本篇文章将基于提供的示例代码,深入讲解如何使用C语言的标准库来实现文本文件的基本读写操作。具体包括`...