-
2015-06-11 17:07:23
上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataStream的使用类似,只不过它是操作纯文本文件的。另外,像 XML、HTML 这种,虽然也是文本文件,可以由QTextStream生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括这部分内容了。
QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对开发人员是透明的。它也会将换行符进行转换,同样不需要自己处理。QTextStream使用 16 位的QChar作为基础的数据存储单位,同样,它也支持 C++ 标准类型,如 int 等。实际上,这是将这种标准类型与字符串进行了相互转换。
QTextStream同QDataStream的使用基本一致,例如下面的代码将把“The answer is 42”写入到 file.txt 文件中:
QFile data("file.txt"); if (data.open(QFile::WriteOnly | QIODevice::Truncate)) { QTextStream out(&data); out << "The answer is " << 42; }
这里,我们在open()函数中增加了QIODevice::Truncate打开方式。我们可以从下表中看到这些打开方式的区别:
枚举值 描述 QIODevice::NotOpen 未打开 QIODevice::ReadOnly 以只读方式打开 QIODevice::WriteOnly 以只写方式打开 QIODevice::ReadWrite 以读写方式打开 QIODevice::Append 以追加的方式打开,新增加的内容将被追加到文件末尾 QIODevice::Truncate 以重写的方式打开,在写入新的数 QIODevice::Text 在读取时,将行结束符转换成 \n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 \r\n QIODevice::Unbuffered 忽略缓存 我们在这里使用了QFile::WriteOnly | QIODevice::Truncate,也就是以只写并且覆盖已有内容的形式操作文件。注意,QIODevice::Truncate会直接将文件内容清空。
虽然QTextStream的写入内容与QDataStream一致,但是读取时却会有些困难:
更多相关内容 -
linux下的文本文件读写操作
2015-05-28 17:45:44在Linux下的文本读写操作的源代码,最原始的程序,修改、添加就会变成你自己的特色。 -
C#实现文本文件读写方法汇总
2020-09-03 15:04:06本文给大家汇总介绍了C#实现文本文件读写的方法,十分的简单实用,有需要的小伙伴可以参考下。 -
VB封装一个文本文件读写类含示例
2021-05-07 06:59:53内容索引:VB源码,文件操作,文本 自己封装一个用VB读写TXT文本文件类文件,含示例源码,方便基础不好的朋友使用。写的目的其实很简单,从自己编程的经历来看,经常要用到文本文件的读写,有时候是需要一个功能就写一... -
掌握文本文件读写的方法
2012-01-04 21:49:26掌握文本文件读写的方法 -
C++对文本文件读写方法
2021-11-13 17:38:051、创建流对象,打开文件 void open( const char *filename ); void open( const char *filename, openmode mode ); filename 文件名 mode:打开模式 ios::app 添加输出 ios::ate 当已打开时寻找到EOF ...1、创建流对象,打开文件
void open( const char *filename );
void open( const char *filename, openmode mode );
filename 文件名
mode:打开模式
ios::app 添加输出
ios::ate 当已打开时寻找到EOF
ios::binary 以二进制模式打开文件
ios::in 为读取打开文件
ios::out 为写入打开文件
ios::trunc 覆盖存在的文件
strace ./a.out
ifstream 类的默认mode
以只读方式ios::in打开文件,文件不存在则打开失败 r
ofstream 类的默认mode
以只写方式ios::out打开文件,文件不存在则创建,存在则清空 w
fstream 类的默认mode
以读写方式ios::in|ios::out打开文件,文件不存在则失败 r+
注意:这些打开模式单独使用和混合使用时功能上有删减,不是简单的相加,具体混合使用后的功能需要通过strace追踪底层调用open函数时对应的flag标志位
注意:可以使用创建类时初始化进行打开文件,效果等同于调用open成员函数,参数与open一样
ifstream ifs.open("test.txt");
ifstream ifs("test.txt");
2、判断文件是否打开成功
bool good();
功能:判断上一次流对象的操作是否成功,可以用于判断文件是否打开成功
返回值:
true 成功
false 失败
bool fail();
功能:判断上一次流对象的操作是否失败,可以用于判断文件是否打开成功
返回值:
true 失败
false 成功
3、流对象 << 写操作 流对象 >> 读操作
ofs << str << endl;
ifs >> str;
4、关闭文件
void close();
注意:在读写类对象时,由于绝大多数成员都是private属性,因此不能在类外直接进行读写;但由于ostream/ifstream类是ofstream/ifstream的父类,因此重载实现<< 和 >> 运算符函数既可以用于输入输出对象,也可以用于类对象的文本文件的读写
读:
#include <iostream> #include <fstream> using namespace std; int main(int argc,const char* argv[]) { ifstream ifs("test.txt"); if(ifs.good()) cout << "文件打开成功" << endl; else cout << "文件打开失败" << endl; string str; double f; ifs >> str >> f; cout << str << "---" << f << endl; ifs.close(); }
写:
#include <iostream> #include <fstream> using namespace std; int main(int argc,const char* argv[]) { ofstream ofs("test.txt"); if(ofs.good()) cout << "文件打开成功" << endl; else cout << "文件打开失败" << endl; ofs << "你好" << endl; ofs.close(); }
-
JSP实验报告+登录系统的制作 简单的页面 文本文件读写
2022-02-22 20:26:01JSP实验报告+登录系统的制作 简单的页面 文本文件读写 附带源码 -
Python示例代码之文本文件读写
2018-11-08 02:42:15文件读写相关系统函数说明 系统函数 说明 input(tips); 提示用户输入信息,例如 str = input("Please input your ip:") 将输入的信息赋值给变量str print ...文件读写相关系统函数说明
系统函数
说明
input(tips);
提示用户输入信息,例如
str = input("Please input your ip:")
将输入的信息赋值给变量str
print ([常量或变量、表达式])
打印信息,例如
print ("you input is: ", str)
打印出字符串或变量、表达式的值
open(filename, mode)
打开文件,返回一个文件对象,其中filename为文件名,mode为打开模式,默认为读。打开模式有r、rb、ab等等种类,后续有表格详细描述。
f.write( filecontent )
向文件中写入内容,其中f为文件对象,filecontent为需要写入的内容。
函数获取返回为写入了多少字节。
f.close()
关闭打开的文件,其中f为文件对象。
f.read()
一次读入文件中的所有内容,例如
str = f.read()
f.readline()
读取当前行的内容,例如
str = f.readline()
f.readlines()
读取所有行的内容,例如
str = f.readlines()
返回的整个为一个字符串,换行被打印成”\n”
for line in f:
print(line)
提供一种按行打印的常用方法。
f.tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()
可以使用 f.seek(offset, from_what) 函数改变文件当前的位置,例如
seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2):表示从文件的结尾往前移动x个字符
文件打开模式类型
模式
描述
r
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+
打开一个文件用于读写。文件指针将会放在文件的开头。
rb+
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
写文件示例
f = open("writetest.txt", "w") f.write( "Python 是一个非常好的语言。\n是的,的确非常好,好的不得了!!\n" ) f.close()
执行完毕没有输出,打开输入的文件显示如下:
读文件示例
f = open("writetest.txt", "r") str = f.read() print(str) f.close()
示例运行结果
读文件示例2
f = open("writetest.txt", "r") for line in f: print(line) f.close()
示例运行结果
如果您喜欢这篇文章,请点赞和评论!
立冬 ---占海题
家乡单衣已入柜,
尼国盛夏正当值。
春耕秋收四季换,
不决已是立冬时。
说明:很多网友觉得应该是“不觉已是立冬时”,其实这里的不决指的是还没有做好决定,
抒发了作者自己尚未做好决定,冬天已经到了,时间匆匆而无所事事的感叹。
-
小程序-C#将文本文件读写并对部分内容匹配和替换
2012-06-24 23:20:27小程序-C#将文本文件读写并对部分内容匹配和替换 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 -
Qt 文本文件读写
2021-01-14 15:59:12文本文件读写二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用 QTextStream 类。QTextStream 和 QDataStream的使用类似,只不过它是操作纯文本文件的...文本文件读写
二进制文件比较小巧,但是不是人可读的格式。文本文件是一种人可读的格式的文件,为了操作这种文件,我们需要使用 QTextStream 类。QTextStream 和 QDataStream的使用类似,只不过它是操作纯文本文件的。还有一些文本格式,比如 XML、HTML,虽然可以由 QTextStream 生成,但 Qt 提供了更方便的 XML 操作类,这里就不包括这部分内容了。
QTextStream 会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对程序员是透明的。它也会将换行符进行转换,同样不需要你自己去处理。QTextStream 使用16位的 QChar 作为基础的数据存储单位,同样,它也支持 C++标准类型,如 int 等。实际上,这是将这种标准类型与字符串进行了相互转换。
QTextStream 同 QDataStream 使用基本一致,例如下面的代码将把“Thomas M. Disch: 334/n”写入到 tmp.txt 文件中:QFilefile("sf-book.txt");
if (!file.open(QIODevice::WriteOnly)) {
std::cerr << "Cannot open file for writing: "
<< qPrintable(file.errorString()) << std::endl;
return;
}
QTextStreamout(&file);
out << "Thomas M. Disch: " << 334 << endl;
可以看到,这段代码同前面的 QDataStream 相关代码基本雷同。文本文件的写入比较容易,但是读出就不那么简单了。例如,out << "Denmark" << "Norway";
是我们写入的代码。我们分别写入两个单词,然后试图以与二进制文件读出的格式相同的形式读出:in >>str1 >> str2;
上面两段代码的 out 和 in 都是 QTextStream 类型的。虽然我们可以正常写入,但读出的时候,str1里面将是 DenmarkNorway,str2 是空的。以文本形式写入数据,是不能区分数据的截断位置的。因为使用 QDataStream 写入的时候,实际上是要在字符串前面写如长度信息的。因此,对于文本文件,更多的是一种全局性质的操作,比如使用 QTextStream::readLine() 读取一行,使用 QTextStream::readAll() 读取所有文本,之后再对获得的 QString 对象进行处理。默认情况下,QTextStream 使用操作系统的本地编码进行读写。不过你可以使用 setCodec() 函数进行设置,比如stream.setCodec("UTF-8");
同 类似,QTextStream 也提供了一些用于格式化输出的描述符,称为 stream manipulators。这些描述符放置在输出内容之前,或者是使用相应的函数,用于对后面的输出内容做格式化。具体的描述符如下setIntegerBase(int)0读出时自动检测数字前缀
2二进制
8八进制
10十进制
16十六进制setNumberFlags(NumberFlags)ShowBase显示前缀,二进制显示0b,八进制显示0,十六进制显示0x
ForceSign在实数前面显示符号
ForcePoint在数字中显示点分隔符
UppercaseBase使用大写的前缀,如0B, 0X
UppercaseDigits使用大写字母做十六进制数字setRealNumberNotation(RealNumberNotation)FixedNotation定点计数表示,如0.000123
ScientificNotation科学计数法表示,如1.23e-4
SmartNotation定点或科学计数法表示,自动选择简洁的一种表示法setRealNumberPrecision(int)设置生成的最大的小数位数,默认是6setFieldWidth(int)设置一个字段的最小值,默认是0setFieldAlignment(FieldAlignment)AlignLeft左对齐
AlignRight右对齐
AlignCenter中间对齐
AlignAccountingStyle符号和数字之间对齐setPadChar(QChar)设置对齐时填充的字符,默认是空格
比如,下面的代码out << showbase << uppercasedigits << hex << 12345678;
将输出0xBC614E。或者我们可以这样去写:out.setNumberFlags(QTextStream::ShowBase | QTextStream::UppercaseDigits);
out.setIntegerBase(16);
out << 12345678;
QTextStream 不仅仅可以输出到 QIODevice 上,也可以输出到 QString 上面,例如QString str;
QTextStream(&str) << oct << 31 << " " << dec << 25 << endl;
-
Android平台的txt文本文件读写操作
2012-07-19 11:05:38Android平台中经常要用到Txt文本文件的读写操作,该文档提供了一个处理方式。 -
Python文本文件读写的3种方法
2018-03-29 14:37:39read()将文本文件所有行读到一个字符串中。 readline()是一行一行的读 readlines()是将文本文件中所有行读到一个list中,文本文件每一行是list的一个元素。 优点:readline()可以在读行过程中跳过特定行。 读写文件... -
利用标准C语言库函数进行文本文件读写
2017-02-21 15:36:30一、文件打开 1、fopen() 二、文件读 fgetc getc getchar fgets gets fscanf 三、文件写 fputc putc putchar fputs puts fprintf -
Android应用程序中读写txt文本文件的基本方法讲解
2020-09-02 12:52:14主要介绍了Android应用程序中读写txt文本文件的基本方法讲解,基本上依靠context.openFileInput()和context.openFileOutput()两个方法为主,需要的朋友可以参考下 -
java中关于文本文件的读写方法实例总结
2020-09-03 05:22:40主要介绍了java中关于文本文件的读写方法,实例总结了Java针对文本文件读写的几种常用方法,并对比了各个方法的优劣及特点,具有一定参考借鉴价值,需要的朋友可以参考下 -
C++文件读写流样板
2018-11-01 00:00:31C++文件读写流样板 -
C++文本文件读写操作详解
2021-05-21 14:10:10前面章节中,已经给大家介绍了文件流...在讲解具体读写文件的方法之前,读者首先要搞清楚的是,对文件的读/写操作又可以细分为 2 类,分别是以文本形式读写文件和以二进制形式读写文件。1) 我们知道,文件中存储的... -
使用Python读写文本文件及编写简单的文本编辑器
2020-09-21 17:40:44主要介绍了使用Python读写文本文件及编写简单的文本编辑器的方法,可以利用简单的Python代码实现编辑器中的读取清空和文本文件的新建等操作,需要的朋友可以参考下 -
VB .NET-文本文件读写
2019-07-17 14:28:55读取指定分隔符格式文本文件: Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\TestFolder\test.txt") MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters... -
PHP文件读写操作之文件写入代码
2021-01-20 00:20:12在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发中还是时有使用... -
文本文件和二进制文件区别读写.rar
2021-04-02 01:05:10文本文件和二进制文件读写区别,C语言 -
TXT文本文件读写查等操作的C# DLL文件及源码
2013-05-25 10:46:03提供了一个用C#语言实现的txt文件操作类,实现了写入txt、读取txt、读取指定行、删除指定行、查询txt指定内容,按照给定条件查询、删除txt文件内容等功能。调用方便,操作简单,附有使用说明,及源码。 -
C#读写文本文件的方法
2020-09-03 16:16:11主要介绍了C#读写文本文件的方法,实例分析了C#操作文本文件的原理与实现技巧,需要的朋友可以参考下 -
Python读写文本文件
2021-02-26 10:59:45Python读写文本文件 读取文本文件 数据几乎无一例外地是被保存在文件中的。这些文件可能是文本文件、CSV 文件、Excel 文件或其他类型的文件。知道如何访问此类文件以及从中读取数据是在 Python 中进行数据处理、加工... -
python文本文件读写的3种方法
2021-02-09 23:51:56第一种方法:file1 = open("test.txt")file2 = open("output.txt","w")while True:line = file1.readline()#这里可以进行逻辑处理file2.write('"'+line[:s]+'"'+",")if not line:break#记住文件处理完,关闭是个好... -
文本文件的读写
2019-05-04 12:30:38①文本文件(例:记事本)、 ②二进制文件(例:视频文件),优点:所占内存较小 操作文件地址的两种方式:①相对路径 ②绝对路径 2、文件打开与关闭 ①格式:FILE *fp = fopen(“路径”,“r”) 做判断 文件是否为... -
【Java实验】使用GUI实现文本文件读写显示
2021-05-20 20:36:55使用IO流对象对文件进行读写 好的小伙伴们,废话不多说,下面就来的实现它。 实现 首先,让我们创建一个GUI界面,先秉持着一切从简的设计思想,预计它长这样: 这样的布局方式,我们可以选择采用流布局实现,在容器 -
文本文件读写
2012-07-23 21:57:16文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。 文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。 1.文件变量与文件名关联: As -
PB对文本文件进行读写.doc
2022-03-14 13:28:39PB对文本文件进行读写 -
文本文件提取分析_文件读写_文本分析_源码
2021-10-04 00:38:10利用python中的jieba的三方库,提取中文文本文件文字并进行数据分析