一、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
三、案列
1、目录操作
头文件
cpp
2、文件操作
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
三、案列
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
点击(此处)折叠或打开
- #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();
- }