qt/c/c++文件操作总结

1. 读取文件

1.1 Qt以二进制方式读取大文件返回char*

在Qt中以二进制模式读取一个大文件(以500MB为例)并将其内容存储到char*数组中,需要谨慎处理内存分配。以下是实现这一功能的步骤和示例代码:

1. 打开文件

使用QFile类以二进制模式打开文件。

2. 检查文件大小

使用QFile的size方法来检查文件的大小,确保它不会超过程序的内存限制。

3. 分配内存

使用new操作符为文件内容分配足够的内存。

4. 读取文件

使用QFile的read方法将文件内容读入分配的内存中。

5. 关闭文件

完成读取后关闭文件

示例代码

#include 
#include 

char* readFile(const QString& filename) {
    QFile file(filename);
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug() << "Cannot open file for reading:" << filename;
        return nullptr;
    }

    qint64 size = file.size();
    if (size > 500 * 1024 * 1024) { // 500MB
        qDebug() << "File is too large";
        return nullptr;
    }

    char* buffer = new char[size]; // 分配内存
    if (!buffer) {
        qDebug() << "Memory allocation failed";
        return nullptr;
    }

    qint64 bytesRead = file.read(buffer, size);
    if (bytesRead != size) {
        qDebug() << "Error reading file";
        delete[] buffer;
        return nullptr;
    }

    file.close();
    return buffer;
}

int main() {
    const QString filename = "path/to/your/largefile.bin";
    char* data = readFile(filename);

    if (data) {
        // 处理数据...

        delete[] data; // 释放内存
    }

    return 0;
}

1.2 C语言以二进制读取读取大文件返回char*

在C语言中以二进制模式读取一个大文件(以500MB为例),你需要使用标准的文件IO函数,并且仔细处理内存分配。这里是一个实现的基本步骤和示例代码:

1. 打开文件

使用fopen函数以二进制模式("rb")打开文件。

2. 确定文件大小

使用fseek和ftell来确定文件的大小,以便知道需要分配多少内存。

3. 分配内存

使用malloc为文件内容分配足够的内存。

4. 读取文件

使用fread将文件内容读入分配的内存中。

5. 关闭文件

读取完成后,使用fclose关闭文件。

示例代码

#include 
#include 

char* readFile(const char* filename) {
    FILE* file = fopen(filename, "rb");
    if (!file) {
        perror("Error opening file");
        return NULL;
    }

    // 移到文件末尾
    fseek(file, 0, SEEK_END);
    long fileSize = ftell(file);
    rewind(file); // 或 fseek(file, 0, SEEK_SET);

    // 分配内存
    char* buffer = (char*)malloc(fileS

你可能感兴趣的:(c++,开发语言)