目录
一、前言
二、c语言文件读写
1.写文件
2.读文件
三、c++文件读写
1.写文件
2.读文件
四、windows api文件读写
1.写文件
2.读文件
五、MFC文件读写
1.写文件
2.读文件
六、Qt文件读写
1.写文件
2.读文件
七、总结
一、前言
我们在学习过程中,学到的最多的感觉就是文件操作了,从学习c语言、c++再到Qt,都有它的影子,文件读写操作的方式有所不同,但都有各自的特点和用途。现在我总结了这五种写法,下面分别简要介绍这些环境下的文件读写操作方式。
二、c语言文件读写
在C语言它是面向过程的语言,文件操作主要通过一系列标准库函数实现,例如 fopen(), fread(), fwrite(), fclose() 等等。下面代码为示例,比较简单。
其中重点需要记住 fopen()函数,它的原型为:
FILE *fopen(const char *filename, const char *mode);
fopen
函数的第二个参数 mode
是一个字符串,用于指定文件的打开模式。常用的有 "r" (以只读方式打开文件,文件必须存在), "w" (以只写方式打开文件。如果文件存在,则长度被截断为零,即该文件内容会消失,如果文件不存在则创建新文件),"a" , "r+",等等。
1.写文件
示例代码为:
// 1.打开文件FILE* pfile = fopen("1.txt","W");if (pfile == NULL){MessageBox("fopen error");return;}char szBuf[1024] = "C语言写文件";// 2.写文件fprintf(pfile,szBuf);// 3.关闭文件fclose(pfile);
2.读文件
示例代码为:
// 1.打开文件FILE* pfile = fopen("1.txt","r");if (pfile == NULL){MessageBox("fopen error");printf("fopen error!");return;}char readBuf[1024] = { 0 };// 2.读文件fread(readBuf, 1, 1024, pfile);// 3.关闭文件printf("结果为:%s", readBuf);
三、c++文件读写
c++是面向对象的语言,所以说会创建一个文件流fstream类,包括ifstream
(输入文件流)、ofstream
(输出文件流)和fstream
(同时支持输入输出的文件流)。
1.写文件
示例代码为:
// 1. 创建文件流ofstream ofs("2.txt");char szBuf[1024] = "c++写文件";// 2. 写文件ofs.write(szBuf,strlen(szBuf) + 1);// 3. 关闭文件ofs.close();
2.读文件
示例代码为:
// 1. 创建文件流ifstream ifs("2.txt");char szBuf[1024] = { 0 };// 2. 读文件ifs.read(szBuf, 1024);// 3. 关闭文件ifs.close();std::cout << szBuf << std::endl;
四、windows api文件读写
Windows API 文件读写就要比较复杂了,Windows API提供了底层的文件操作函数,如CreateFile()
, ReadFile()
, WriteFile()
, CloseHandle()
等。CreateFile :用于打开或创建文件、管道、邮件槽、通信设备等,并返回一个句柄,ReadFile和WriteFile :分别用于从文件句柄指向的文件中读取数据和向文件写入数据。CloseHandle :关闭一个打开对象的句柄。
我们大家都知道学习Windows系统比较难,主要因为是 API 用的都是自己封装的数据类型,学习过程中需要不断查阅文档和 API 原型。还一个主要原因是函数api的参数非常的多,有的甚至有十几个。。。。
1.写文件
示例代码为:
HANDLE hFile;// 1. 创建文件hFile = CreateFile("3.txt", GENERIC_WRITE, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE){printf("CreateFile Error");return;}// 2. 写文件char szBuf[1024] = "window api 写文件";DWORD dwWrites;WriteFile(hFile, szBuf, strlen(szBuf) + 1, &dwWrites, NULL);CloseHandle(hFile);
2.读文件
示例代码为:
HANDLE hFile;hFile = CreateFile("3.txt", GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);if (hFile == INVALID_HANDLE_VALUE){MessageBox("CreateFile Error");return;}// 2. 读文件char szBuf[1024] = { 0 };DWORD dwWrites;if (!ReadFile(hFile, szBuf, 1024, &dwWrites, NULL)){MessageBox("ReadFile Error");return;}printf("结果为: %s",szBuf);CloseHandle(hFile);
五、MFC文件读写
MFC就很简单了,写法上几乎和c++语法一样。
1.写文件
示例代码为:
CFile file("4.txt",CFile::modeCreate | CFile::modeWrite);char szBuf[1024] = "MFC写文件";file.Write(szBuf, strlen(szBuf) + 1);file.Close();
2.读文件
示例代码为:
CFile file("4.txt", CFile::modeRead);char szBuf[1024] = { 0 };file.Read(szBuf, file.GetLength());file.Close();MessageBox(szBuf);
六、Qt文件读写
在Qt中,读写文件是一个常见的操作,可以通过多种方式实现,但最常用和最直接的方法是使用QFile
和QTextStream
类,或者使用QFile
与QDataStream
类进行二进制数据的读写。
1.写文件
示例代码为:
QFile file("5.txt"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { qDebug() << "无法打开文件写入"; return; } QTextStream out(&file); out << "Qt写文件\n"; file.close();
2.读文件
示例代码为:
QFile file("5.txt"); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "无法打开文件读取"; return; } QTextStream in(&file); QString line; while (!in.atEnd()) { line = in.readLine(); qDebug() << line; } file.close();
七、总结
以上就是读写文件的所有示例写法了,虽然在语法上面都各不相同,但是在具体实现基本上都一样。都是按照三个步骤来实现,创建文件,读写文件,关闭文件,这些都不要求全部掌握,重要的理解斌且掌握这种代码思想。