一、QT目录操作
1、Qt提供了QFile类来实现文件的操作,为了更方便的处理文本和二进制,还提供的QTextStream类QDataStream类。处理目录可以使用QDir
2、QDir类具有存取目录结构和内容的能力,使用QDir可以操作、存取目录、文件信息、底层文件系统,还可以存取Qt的资源文件
3、QDir可以使用相对路径也可以使用绝对路径,你可以使用isRelative() isAbsolute()函数来检测使用的是相对路径还是绝对路径。
4、使用makeAbsolute()将一个相对路径最为绝对路径
5、使用isReadable() isRoot()来测试给定目录的属性
6、目录的路径可以通过path()函数返回,setPath函数设置新的路径,使用absolutePath函数返回绝对路径。
7、使用dirName函数返回目录名,它通常返回绝对路径的最后一个元素。
8、mkDir创建目录
9、exists函数判断目录是否可用,count返回目录下的条目个数,entrylist返回目录下所有元素组成的列表,rmdir删除目录,remove删除文件
10、separator函数返回目录的分隔符
11、QFileInfo类,提供了一个与系统无关的文件信息,包含文件名、路径、存取权限、文件大小、修改时间等等
12、为了提高效率,QFileInfo将文件信息进行了缓存,如果希望每次都从文件系统读取信息,那么使用setCaching(false)来关闭缓存
13、文件名可以通过path和fileName来分解,fileName返回的部分可以通过baseName和extension来获取主文件名和扩展名
14、created函数返回文件创建日期,lastModified返回最后一次修改日期,lastRead返回最后一次读取事件
15、文件的读写权限由isReadable() isWriteable() isExecuteable()来获取
16、文件的属主可以通过owner() group() ownerId() groupId() 来获取
17、permission()函数可以将文件的权限和属主一起读取出来
二、 QT文件读取
QDataStream类可以将二进制数据串行化,同时实现了c++数据的串行化
QTextStream可以很方便的读写文本数据
Qt读写文件的方式:
1、根据文件名实例化一个QFile类
QFile file("123.txt");
2、使用QFile的open方法打开文件
file.open(QIODevice::ReadOnly);
file.open(QIODevice::ReadWrite);
file.open(QIODevice::WriteOnly);
3、得到一个输入或者输出流
QTextStream out(&file)
4、写入或者读出数据
out<<"hello\n"<<"world\n";
三、案列
1、目录操作
头文件
-
#ifndef MYDIALOG_H
-
#define MYDIALOG_H
-
-
#include <QtGui>
-
-
class myDialog : public QDialog
-
{
-
Q_OBJECT
-
public:
-
myDialog();
-
private:
-
QLineEdit *fileNameEdit;
-
QPushButton *openBtn, *getBtn;
-
QTextEdit *infoText;
-
QCheckBox *dir, *readable, *writeable, *executeable;
-
public slots:
-
void openFile();
-
void getInfo();
-
};
-
-
#endif
cpp
-
#include "myDialog.h"
-
#include <QFileInfo>
-
-
myDialog::myDialog()
-
{
-
//控件初始化
-
fileNameEdit = new QLineEdit();
-
openBtn = new QPushButton(tr("打开"));
-
infoText = new QTextEdit();
-
getBtn = new QPushButton(tr("获取文件信息"));
-
dir = new QCheckBox(tr("目录"));
-
readable = new QCheckBox(tr("可读"));
-
writeable = new QCheckBox(tr("可 写"));
-
executeable = new QCheckBox(tr("可执行"));
-
-
//布局
-
QHBoxLayout *hLay0 = new QHBoxLayout();
-
hLay0->addWidget(new QLabel(tr("文件名")));
-
hLay0->addWidget(fileNameEdit);
-
hLay0->addWidget(openBtn);
-
-
QHBoxLayout *hLay1 = new QHBoxLayout();
-
hLay1->addWidget(dir);
-
hLay1->addWidget(readable);
-
hLay1->addWidget(writeable);
-
hLay1->addWidget(executeable);
-
-
QVBoxLayout *vLay = new QVBoxLayout();
-
vLay->addLayout(hLay0);
-
vLay->addWidget(infoText);
-
vLay->addLayout(hLay1);
-
vLay->addWidget(getBtn);
-
-
//绑定信号和槽函数
-
connect(openBtn, SIGNAL(clicked()), this, SLOT(openFile()));
-
connect(getBtn, SIGNAL(clicked()), this, SLOT(getInfo()));
-
setLayout(vLay);
-
}
-
-
void myDialog::openFile()
-
{
-
QString path = QFileDialog::getOpenFileName(this, tr("选择文件"), "/", "file(*)");
-
fileNameEdit->setText(path);
-
}
-
void myDialog::getInfo()
-
{
-
//fileNameEdit infoText dir readable writeable executeable
-
//获取QFileInfo对象
-
QFileInfo fileInfo(fileNameEdit->text());
-
//清空所有的信息
-
infoText->clear();
-
//从QFileinfo对象中获取信息
-
qint64 size = fileInfo.size();
-
QDateTime created = fileInfo.created();
-
QDateTime lastModified = fileInfo.lastModified();
-
QDateTime lastRead = fileInfo.lastRead();
-
bool isDir = fileInfo.isDir();
-
bool isReadable = fileInfo.isReadable();
-
bool isWriteable = fileInfo.isWritable();
-
bool isExecutable = fileInfo.isExecutable();
-
-
//加载所有信息
-
infoText->append(QString(tr("file size: %1\n")).arg(size));
-
infoText->append(QString(tr("file create time: %1\n")).arg(created.toString()));
-
infoText->append(QString(tr("file lastModified time: %1\n")).arg(lastModified.toString()));
-
infoText->append(QString(tr("file lastRead time: %1\n")).arg(lastRead.toString()));
-
//set checkbox
-
dir->setCheckState(isDir?Qt::Checked :Qt::Unchecked);
-
readable->setCheckState(isReadable?Qt::Checked :Qt::Unchecked);
-
writeable->setCheckState(isWriteable?Qt::Checked :Qt::Unchecked);
-
executeable->setCheckState(isExecutable?Qt::Checked :Qt::Unchecked);
-
}
2、文件操作
-
#include <QApplication>
-
#include <QIODevice>
-
#include <QFile>
-
#include <QDataStream>
-
#include <QtDebug>
-
-
int main(int argc, char *argv[])
-
{
-
QApplication app(argc, argv);
-
-
QFile file("123.txt");
-
file.open(QIODevice::WriteOnly);
-
QDataStream out(&file);
-
out<<"hello world\n";
-
file.close();
-
-
file.open(QIODevice::ReadOnly);
-
QDataStream in(&file);
-
QString str;
-
in>>str;
-
qDebug()<<str;
-
file.close();
-
-
return app.exec();
-
}
阅读(1413) | 评论(0) | 转发(0) |