文件类型
常用的文件类型有很多,以下是一些常见的文件类型及其用途:
- 文本文件(.txt):纯文本格式的文件,可以存储简单的文本内容。
- Word 文档(.doc/.docx):用于创建、编辑和保存包含文本、图表、图像等多种内容的文档。
- PDF 文件(.pdf):可移植文档格式,用于以不受操作系统和应用程序限制的方式共享文档。
- 电子表格文件(.xls/.xlsx):用于创建、编辑和组织数据表格的文件格式。
- PowerPoint 演示文件(.ppt/.pptx):用于创建、展示和分享演示文稿和幻灯片。
- 图像文件(.jpg/.png/.gif):存储图像的常见文件格式,用于显示和共享图像。
- 音频文件(.mp3/.wav/.aac):存储音频数据的文件,用于播放和分享音频。
- 视频文件(.mp4/.avi/.mov):存储视频的文件,用于播放和分享视频。
- 压缩文件(.zip/.rar):将多个文件或文件夹打包并压缩在一起,以节省存储空间和方便传输。
- 数据库文件(.mdb/.sql):存储数据的文件,通常用于管理和处理大量结构化信息。
以上只是一些常用的文件类型,实际上还有许多其他不同用途和扩展名的文件类型。不同的文件类型适用于不同的用途和应用。
对于程序来说,文件读写通常可以分为文本文件和非文本文件两种类型。
- 文本文件:文本文件是以纯文本形式存储的文件,其中包含的数据是可读的字符数据。在读取或写入文本文件时,程序会按照字符的形式进行操作,可以逐行读取文本内容,进行文本搜索、替换等操作。常见的文本文件包括 .txt、.csv、.xml 等。
- 非文本文件:非文本文件则是二进制格式存储的文件,其中包含的数据不易被人类直接阅读理解,需要特定的程序进行解析和处理。常见的非文本文件包括图片文件(.jpg、.png)、音频文件(.mp3、.wav)、视频文件(.mp4、.avi)、压缩文件(.zip、.rar)等。
在程序中,读写文本文件和非文本文件需要采用不同的方式和处理方法。读写文本文件一般通过字符流或文本读写器进行操作,而读写非文本文件则需要使用字节流或二进制读写器来操作。开发者需要根据文件的类型选择合适的读写方式,确保数据的正确加载和保存。
C++ 读文本文件
在 C++ 中,读取文本文件有多种方式,可以根据需求选择最适合的方法。以下是几种常见的读取文本文件的情况和对应的代码解释和示例:
情况一:逐行读取文本文件
#include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream file("example.txt");
std::string line;
if (file.is_open()) {
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
file.close();
} else {
std::cout << "无法打开文件" << std::endl;
}
return 0;
}
上述代码会打开名为 “example.txt” 的文本文件,并逐行读取其中的内容,然后将每行内容输出到控制台。
情况二:按单词读取文本文件
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::ifstream file("example.txt");
std::string word;
if (file.is_open()) {
while (file >> word) {
std::cout << word << std::endl;
}
file.close();
} else {
std::cout << "无法打开文件" << std::endl;
}
return 0;
}
上述代码会打开名为 “example.txt” 的文本文件,并按单词(以空格或换行符分隔)读取文件内容,然后输出每个单词到控制台。
情况三:读取整个文本文件内容
#include <fstream>
#include <iostream>
int main() {
std::ifstream file("example.txt");
std::string content;
if (file) {
file.seekg(0, std::ios::end);
content.resize(file.tellg());
file.seekg(0, std::ios::beg);
file.read(&content[0], content.size());
file.close();
std::cout << content << std::endl;
} else {
std::cout << "无法打开文件" << std::endl;
}
return 0;
}
上述代码会打开名为 “example.txt” 的文本文件,并将整个文件内容一次性读取到一个字符串中,然后将字符串内容输出到控制台。
以上是几种在 C++ 中读取文本文件的方式,根据具体需求可选择适合的方法。在实际应用中,需要注意文件打开是否成功、文件读取时的异常处理,在使用完文件后要及时关闭文件流,以避免资源泄漏等问题。
C++ 写文本文件
在C++中,可以使用多种方法来写入文本文件。下面是几种常见的情况解说和代码示例:
- 使用ofstream类写入文本文件:
#include <iostream>
#include <fstream>
int main() {
std::ofstream file("example.txt"); // 创建一个名为example.txt的文件
if (file.is_open()) {
file << "Hello, World!" << std::endl; // 写入文本内容
file.close(); // 关闭文件
std::cout << "文件写入成功!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
return 0;
}
- 使用fprintf函数写入文本文件:
#include <stdio.h>
int main() {
FILE* file = fopen("example.txt", "w"); // 创建一个名为example.txt的文件
if (file != NULL) {
const char* text = "Hello, World!";
fprintf(file, "%s\n", text); // 写入文本内容
fclose(file); // 关闭文件
printf("文件写入成功!\n");
}
else {
printf("无法打开文件!\n");
}
return 0;
}
- 使用C++11的filesystem库写入文本文件:
#include <iostream>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
fs::path filePath = "example.txt";
std::ofstream file(filePath); // 创建一个名为example.txt的文件
if (file.is_open()) {
file << "Hello, World!" << std::endl; // 写入文本内容
file.close(); // 关闭文件
std::cout << "文件写入成功!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
return 0;
}
在以上示例中,我们分别使用了ofstream类和fprintf函数来创建并写入文本文件,对应的代码通过打开文件流,将文本数据写入文件,并在操作完成后关闭文件。请注意,路径可以根据实际情况进行调整。
需要注意的是,在使用这些方法写入文本文件时,要确保文件路径是可写的,并且对应的文件夹存在。否则可能会出现无法打开文件的情况。
C++ 读二进制文件
在C++中读取二进制文件和读取文本文件略有不同,需要以二进制方式打开文件并使用字节流来读取数据。以下是几种常见情况和代码示例:
- 使用ifstream类读取二进制文件:
#include <iostream>
#include <fstream>
int main() {
std::ifstream file("example.bin", std::ios::binary); // 以二进制模式打开一个名为example.bin的文件
if (file.is_open()) {
// 获取文件大小
file.seekg(0, std::ios::end);
int fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// 读取整个文件内容
char* data = new char[fileSize];
file.read(data, fileSize);
// 在此可以对读取到的二进制数据进行处理
delete[] data; // 记得释放内存
file.close(); // 关闭文件
std::cout << "文件读取成功!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
return 0;
}
- 使用fread函数读取二进制文件:
#include <stdio.h>
int main() {
FILE* file = fopen("example.bin", "rb"); // 以二进制只读模式打开名为example.bin的文件
if (file != NULL) {
// 获取文件大小
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET);
// 读取整个文件内容
char* data = new char[fileSize];
fread(data, 1, fileSize, file);
// 在此可以对读取到的二进制数据进行处理
delete[] data; // 记得释放内存
fclose(file); // 关闭文件
printf("文件读取成功!\n");
}
else {
printf("无法打开文件!\n");
}
return 0;
}
在以上示例中,我们分别使用了ifstream类和fread函数来读取二进制文件,通过以二进制模式打开文件,并以字节流方式读取文件内容。在读取完成后,可以对读取到的二进制数据进行进一步处理。
记得在读取完文件后,要关闭文件,并释放动态分配的内存,以防止内存泄漏。请注意,路径可以根据实际情况进行调整。
C++ 写二进制文件
在C++中写入二进制文件与写入文本文件类似,也需要以二进制方式打开文件,并使用字节流来写入数据。以下是几种常见情况和代码示例:
- 使用ofstream类写入二进制文件:
#include <iostream>
#include <fstream>
int main() {
std::ofstream file("example.bin", std::ios::binary); // 以二进制模式创建一个名为example.bin的文件
if (file.is_open()) {
int data = 12345;
// 将二进制数据写入文件
file.write(reinterpret_cast<char*>(&data), sizeof(data));
file.close(); // 关闭文件
std::cout << "文件写入成功!" << std::endl;
}
else {
std::cout << "无法打开文件!" << std::endl;
}
return 0;
}
- 使用fwrite函数写入二进制文件:
#include <stdio.h>
int main() {
FILE* file = fopen("example.bin", "wb"); // 以二进制只写模式创建名为example.bin的文件
if (file != NULL) {
int data = 12345;
// 将二进制数据写入文件
fwrite(reinterpret_cast<const void*>(&data), sizeof(data), 1, file);
fclose(file); // 关闭文件
printf("文件写入成功!\n");
}
else {
printf("无法打开文件!\n");
}
return 0;
}
在以上示例中,我们分别使用了ofstream类和fwrite函数来写入二进制文件。在打开文件时,通过指定ios::binary或"b"标志来设置二进制模式。然后,将要写入的二进制数据转换为char*(对于C++方式),或使用reinterpret_cast强制转换(对于C函数方式)。
需要注意的是,在写入二进制文件时,应确保写入的数据类型和大小是一致的,并且要小心处理大端字节序和小端字节序的问题。
关注我,不迷路,共学习,同进步
关注我,不迷路,共学习,同进步