qt QIODevice和QDir

QIDevice中的打开模式

常量描述
QIDevice::NotOpen设备没有打开
QIDevice::ReadOnly以只读方式打开,无法写入
QIDevice::WriteOnly以只写方式打开,无法读取
QIDevice::Append以附加模式打开,所有的数据都将写到文件末尾
QIDevice::Truncale重写设备,如果可能设备在打开时会被截断,数据都将会丢失
QIDevice::Text在读取时,将行结束符转换成\n;在写入时,将结束符转换成本地格式,win32平台是\r\n
QIDevice::Unbuffered绕过设备所有的缓冲区

Qdir 中常用目录的获取函数

返回类型QDir返回类型 为QString返回值
currentcurrentPath()应用程序的工作目录
home()homePath()用户的home目录
root()rootPath()root根目录
temp()tenpPath()系统临时存放的目录
在Linux环境下使用Qt开发应用,如果需要实现实时挂载U盘并读取文件,可以按照以下步骤操作: 1. **环境准备**: - 确保已经安装了Qt Creator(集成开发环境,包含Qt库)以及支持的Qt版本(如Qt 5.x或更高)。 - 安装必要的Linux库,比如`libudev`用于检测USB设备,`boost`可能用于处理文件系统操作。 2. **添加权限**: - 对于应用程序,可能需要运行时以root权限来访问USB设备。可以考虑使用`QProcess`来执行命令行操作,或者使用`PolicyKit`等工具来管理权限请求。 3. **使用QFile及QIODevice**: - `QFile`类可以用于打开、读取和写入文件,包括从挂载的U盘上。通过`QFileSystemEntry`可以获取指定路径的信息,确认是否是U盘设备。 ```cpp QFile file("/media/<your_device_name>/<file_path>"); if (file.exists() && file.open(QIODevice::ReadOnly)) { QByteArray data = file.readAll(); // 这里可以解析和操作数据 } ``` 4. **检测并挂载U盘**: - 使用`QStandardPaths`和`QLibraryInfo`来获取系统的临时目录,然后监听`udev`事件来检查新插入的U盘。 - 可以使用`udisksctl`或者`libusbx`等库来监控和控制USB设备动态挂载。 ```cpp QStandardPaths::tempPath().append("/mounted_disk"); QDir dir(tempPath()); dir.entryList().forEach([this](const QString &entry) { if (isUsbDrive(entry)) { // 自定义函数判断是否为U盘 mountDevice(entry); } }); ``` 5. **事件处理器**: - 使用`QThread`或者信号槽机制(`QObject::connect`)来处理`udev`事件,并在主线程以外的地方进行文件操作,防止UI阻塞。 6. **异常处理**: - 对可能出现的错误,比如权限不足、找不到设备等,要有适当的错误处理和提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风赤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值