QFile

本文介绍了如何使用QFile在Qt中写入文件,包括如何打开文件,设置写入模式为覆盖或追加,以及如何将QString转换为Latin1编码并写入文件。通过示例代码展示了QFile的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QFile file(strFile);
//默认清除文件原内容,不存在则创建新文件    Append表示在文件末尾追加内容
file.open(QIODevice::WriteOnly | QIODevice::Text);

{
    QString s;
    file.write(s.toLatin1());
}

file.close()

 

转载于:https://www.cnblogs.com/wangbin-heng/p/10306101.html

### 关于 `QFile` 和 `fseek` 的用法 #### 使用 `QFile` 进行文件操作 `QFile` 是 Qt 提供的一个类,用于处理本地文件的读写操作。它提供了多种方法来打开、关闭以及读取文件的内容。通过示例代码可以看出,`QFile` 支持以只读模式 (`QIODevice::ReadOnly`) 打开文件并读取其内容[^1]。 下面是基于 `QFile` 实现文件读取功能的核心逻辑: ```cpp #include <QFile> #include <QDebug> void readFileUsingQFile(const QString& fileName) { QFile file(fileName); if (file.open(QIODevice::ReadOnly)) { char buffer[100]; qint32 bytesRead = file.readLine(buffer, sizeof(buffer)); if (bytesRead != -1) { // 成功读取数据 qDebug() << "长度:" << bytesRead << " 内容:" << buffer; } file.close(); } else { qDebug() << file.errorString(); } } ``` #### 使用标准 C 函数 `fseek` `fseek` 是 C 标准库中的函数,允许程序设置文件指针的位置。它的原型如下所示: ```c int fseek(FILE *stream, long offset, int whence); ``` 其中参数解释为: - `stream`: 文件流对象。 - `offset`: 偏移量(单位为字节)。 - `whence`: 定义偏移位置的起点,可以是以下三个宏之一:`SEEK_SET`, `SEEK_CUR`, 或者 `SEEK_END`. 下面是一个简单的例子展示如何利用 `fseek` 来调整文件指针到特定位置后再继续读取数据: ```cpp #include <cstdio> #include <cstdlib> void useFSeekToAdjustPosition(const char* filePath) { FILE* fp = std::fopen(filePath, "r"); if (!fp) { perror("无法打开文件"); exit(EXIT_FAILURE); } const size_t bufferSize = 100; char buffer[bufferSize]; // 将文件指针移动至第50个字节处 if (std::fseek(fp, 50L, SEEK_SET) != 0) { perror("fseek 失败"); fclose(fp); exit(EXIT_FAILURE); } // 继续从当前位置读取一些字符 if (std::fgets(buffer, static_cast<int>(sizeof(buffer)), fp)) { printf("从指定位置开始的数据:%s\n", buffer); } fclose(fp); } ``` 需要注意的是,在混合使用 `QFile` 和传统 C 风格 I/O 操作时要特别小心,因为两者管理文件的方式不同步可能导致不可预期的行为。如果必须在同一项目里同时采用这两种方式,则建议明确划分职责范围或者优先选用统一框架下的工具集。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值