大家好,又见面了,我是你们的朋友全栈君。
之前简单介绍了Qt读写文件
Qt之读写文件
http://blog.csdn.net/zhuyunfei/article/details/51249378
这里记录下自己学习QFile的笔记。
1.在Qt之读写文件中,在打开模式中指定未Append模式,发现如果文件不存在会自动创建新文件,在QFile的源码中找到了原因,在open函数的定义中都有如下语句
if (mode & Append)
mode |= WriteOnly;
也就是说,只要打开模式中设置了Append模式,都会被赋予WriteOnly模式。
而只有在WriteOnly或者ReadWrite模式下,当文件不存在时,会自动创建文件。
2.文件链接或者说是文件的快捷方式
在windows系统下,对应的说法是通过QFile可以创建文件的快捷方式;在unix系统下,则是文件链接。
创建链接通过调用link()函数,此函数有两种实现方式
bool link(QString& linkName)
bool link(QString& fileName,QString&linkName)
其实第二个函数是调用第一个函数来实现,第二个函数的源码实现方式如下:
QFile(fileName).link(linkName);
在windows环境下创建快捷方式文件,必须含有“.lnk”文件扩展名
查看快捷方式文件的路径
QString symLinkTarget()
QString symLinkTarget(QString& fileName)
这两个函数分别用来取代QT4中的
QString readLink()
QString readLink(QString & fileName)
最后来看个这几个函数的实际使用:
QFile file;
//设置文件名
file.setFileName(QObject::trUtf8("new_test.csv"));
//创建快捷方式
bool status = file.link(QObject::trUtf8("new_test_link.lnk"));
if(status){
qDebug()<<"link() return true";
}else{
qDebug()<<"link() return false";
}
//输出快捷方式文件的绝对路径
qDebug()<<"symLinkTarget():"<<QFile(QObject::trUtf8("new_test_link.lnk")).symLinkTarget();
输出结果如下:
3.文件的复制,改名和删除
文件复制,实现将QFile文件复制并以新文件名保存。
复制文件相关 函数:
bool copy(QString&newName)
bool copy(QString& fileName,QString&newName)
第二个函数是重载函数,以如下方式直接调用第一个函数实现
QFile(fileName).copy(newName)
文件复制例子:
QFile file;
file.setFileName(QObject::trUtf8("test.csv"));
//判断新文件是否存在
if(!QFile::exists(QObject::trUtf8("new_test.csv"))){
qDebug()<<"复制文件";
//复制文件
bool status = file.copy(QObject::trUtf8("new_test.csv"));
if(status){
qDebug()<<"copy file successed!";
}
}
文件改名,实现把QFile文件由原文件名改为指定的新文件名。相关函数如下:
bool rename(QString & newName)
bool rename(QString& oldName,QString&newName)
类似的,第二个函数是个重载函数,直接使用第一个函数实现
QFile(oldName).rename(newName)
样例代码
QFile file;
file.setFileName(QObject::trUtf8("new_test.csv"));
//改名
file.rename(QObject::trUtf8("new_test.csv"),QObject::trUtf8("new_test_rename.csv"));
文件删除,删除QFile文件,或者删除指定的QFile文件。相关函数如下:
bool remove()
bool remove(QString& fileName)
类似的,第二个函数是个重载函数,直接使用第一个函数实现
QFile(fileName).remove()
样例代码:
QFile file;
file.setFileName(QObject::trUtf8("new_test.csv"));
//删除文件
if(file.remove()){
qDebug()<<"删除文件成功";
}else{
qDebug()<<"删除文件失败";
}
4.文件权限
设置文件权限为Permissions指定的权限,设置成功返回true,如果不许编辑文件权限则返回false。相关函数如下:
QFile::Permissions permissions()
QFile::Permissions permissions(QString& fileName)
bool setPermissions(Permissions permissions)
bool setPermissions(QString& fileName,Permissions permissions)
权限表如下:
常量 | 值 | 描述 |
QFileDevice::ReadOwner | 0x4000 | 文件拥有者可读 |
QFileDevice::WriteOwner | 0x2000 | 文件拥有者可写 |
QFileDevice::ExeOwner | 0x1000 | 文件拥有者可执行 |
QFileDevice::ReadUser | 0x0400 | 用户可读 |
QFileDevice::WriteUser | 0x0200 | 用户可写 |
QFileDevice::ExeUser | 0x0100 | 用户可执行 |
QFileDevice::ReadGroup | 0x0040 | 组用户可读 |
QFileDevice::WriteGroup | 0x0020 | 组用户可写 |
QFileDevice::ExeGroup | 0x0010 | 组用户可执行 |
QFileDevice::ReadOther | 0x0004 | 任何用户可读 |
QFileDevice::WriteOther | 0x0002 | 任何用户可写 |
QFileDevice::ExeOther | 0x0001 | 任何用户可执行 |
代码
QFile file(QObject::trUtf8("new_test.csv"));
qDebug()<<"Permissions:"<<file.permissions();
输出结果如下:
从结果可知,此文件对任何用户除了可执行权限外,具备其他所有权限.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131874.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...