1.涉及到的类
QFile --》表示某个文件
QDir --》表示某个目录
QFileInfo --》表示文件的属性信息2.使用思路
(1)定义QFile对象
QFile::QFile(const QString &name)
参数:name --》文件路径名
(2)打开文件
bool QFile::open(QIODevice::OpenMode mode)
返回值:成功true 失败false
参数:mode --》 QIODevice::ReadOnly 只读
QIODevice::WriteOnly 只写
QIODevice::ReadWrite 可读写
QIODevice::Append 追加
QIODevice::Truncate 清空覆盖文件
(3)读写文件
读文件:
qint64 QIODevice::read(char *data, qint64 maxSize)
返回值:读取到的字节数
参数:data --》存放读取的数据
maxSize --》你打算读取多少字节的数据
QByteArray QIODevice::read(qint64 maxSize)
返回值:返回你成功读取到的字符串
参数:maxSize --》你打算读取多少字节的数据
QByteArray QIODevice::readAll() //一口气把整个文件全部读完(适合读取小文件)
返回值:返回你成功读取到的字符串
qint64 QIODevice::readLine(char *data, qint64 maxSize) //一次最多只能读取一行数据,遇到回车结束读取 fgets()类似
返回值:读取到的字节数
参数:data --》存放读取的数据
maxSize --》你打算读取多少字节的数据
写文件:
qint64 QIODevice::write(const char *data, qint64 maxSize)
qint64 QIODevice::write(const char *data)
qint64 QIODevice::write(const QByteArray &byteArray)
(4)关闭文件
void QFileDevice::close()
(5)判断是否读取到文件末尾(当你循环读取一个文件的时候)
bool QFileDevice::atEnd() const
返回值:读到末尾--》true
3.整理总结QString和char *以及QByteArray之间的转换
QString --》QByteArray 使用 toUtf8()
QString --》char * 使用 QChar *QString::data()
QByteArray --》QString QString(QByteArray) 构造函数
char * --》QString QString(char *) 构造函数
4.目录操作QDir
(1)创建QDir对象
QDir(const QString &path) //path是目录路径名
(2)遍历目录
QStringList QDir::entryList()
返回值:字符串列表,用来存放多个文件的名字5.获取文件属性QFileInfo
(1)创建QFileInfo对象
QFileInfo(const QString &file) //通过file路径名去创建QFileInfo的对象(最好使用绝对路径)
(2)获取文件各种属性
qint64 QFileInfo::size() const //返回文件大小
bool QFileInfo::isDir() const //判断是否是目录
返回值: 返回true表示是目录
bool QFileInfo::isFile() const //判断是否是普通文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//打开文件对话框
void MainWindow::on_openbt_clicked()
{
//弹出文件对话框
filepath=QFileDialog::getOpenFileName(this,"我的文件对话框");
//创建QFile对象
QFile myfile(filepath);
//打开文件
myfile.open(QIODevice::ReadWrite);
//读取文件内容
QByteArray buf=myfile.readAll();
//把读取内容在文本浏览框和编辑框中显示出来
// setText(QString &text) QString &text=buf;
ui->textEdit->setText(buf);
ui->textBrowser->setText(buf);
//关闭文件
myfile.close();
}
//保存修改后的文件
void MainWindow::on_savebt_clicked()
{
//清空覆盖原文件
QFile myfile(filepath);
myfile.open(QIODevice::ReadWrite|QIODevice::Truncate);
//获取文本编辑框中修改后的完整内容
QString str=ui->textEdit->toPlainText();
//把获取的完整内容写入到原文件中
myfile.write(str.toUtf8());
//关闭文件
myfile.close();
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QDebug>
#include <QFileInfo>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//创建QDir的对象
QDir mydir("C:/Users/PC/Desktop/share");
//遍历目录
QStringList mylist=mydir.entryList();
//判断目录中子目录和普通文件
for(int i=0; i<mylist.size(); i++)
{
//拼接得到每个文件/目录的绝对路径
QString allpath=QString("C:/Users/PC/Desktop/share/%1").arg(mylist.at(i));
QFileInfo myinfo(allpath);
//判断是否是目录
if(myinfo.isDir()) //是目录
qDebug()<<allpath;
if(myinfo.isFile()) //是普通文件
qDebug()<<allpath<<" 大小是: "<<myinfo.size();
}
}
MainWindow::~MainWindow()
{
delete ui;
}