簡述
在QT中,我們時常要對文件進行各種操作,比如文件的創建、寫入、拷貝和刪除等等,這些都要用到QFile類。
QFile類提供了讀寫文件的接口。一般情況下,我們可以直接在調用構造函數的時候傳遞文件名,這是比較方便的方法。或者使用QFile創建對象,再調用setFileName()方法來設置文件路徑。其中文件名中的路徑分隔符要求必須是'/',其他分隔符QFile不支持。
常用接口
QFile構造函數:
QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)
QFile的常用函數:
文件打開模式:
代碼之路
1.創建並打開文件.
C++
//初始化時加載文件路徑 QFile file("F:/test/xxx.txt"); //以讀寫的方式打開文件,成功返回true,失敗返回false //想用其他方式打開文件,請看上面的文件打開模式 bool ok = file.open(QIODevice::ReadWrite); //如果文件不存在,則創建並打開該文件
2.判斷文件是否存在.
C++
//判斷指定文件是否存在.也可以用來判斷在指定路徑下是否有文件和你將要創建的文件重名. //存在返回true,不存在返回false bool exist = QFile::exists("F:/test/xxx.txt");
3.拷貝文件.
C++
//把D盤里的xxx.txt拷貝到到F盤,命名為sss.txt //拷貝成功返回true,失敗返回false bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");
4.給文件重命名
C++
QFile file("F:/xxx.txt"); bool ok = file.rename("F:/sss.txt"); //重命名成功返回true,失敗返回false //也可以直接調用 bool ok = QFile::remove("F:/xxx.txt", "F:/sss.txt");
5.獲取用戶對指定文件的權限,是否可讀
C++
QFlags<QFileDevice::Permission> power = QFile::permissions("F:/xxx.txt"); //判斷文件所有者是否可讀 if (power.testFlag(QFile::ReadOwner)) qDebug("Can Read!");
6.寫入文件
C++
//定義文件內容字符串 QString str= "寫入文件的內容"; QFile file("F:/xxx.txt"); //打開文件,不存在則創建 file.open(QIODevice::ReadWrite | QIODevice::Text); //寫入文件需要字符串為QByteArray格式 file.write(str.toUtf8()); file.close();
7. 讀取文件數據
C++
//先打開文件 QFile file("F:/xxx.txt"); file.open(QIODevice::ReadOnly | QIODevice::Text); //使用QTextStream一行一行讀取文件 QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); //整行讀取 qDebug() << line; }
8.刪除文件
C++
QFile file("F:/xxx.txt"); bool ok = file.remove(); //刪除成功返回true,失敗返回false //也可以直接調用 bool ok = QFile::remove("F:/xxx.txt");
9.獲取文件夾下所有文件
C++
QDir *dir = new QDir("F:/"); QStringList filters; filters << "*.png" << "*.jpg" << "*.bmp"; //過濾器,過濾你想要的文件后綴 //用鏈表保存過濾的文件名 QList<QFileInfo> *fileInfo = new QList<QFileInfo>(dir->entryInfoList(filters)); //獲取文件數目、文件名稱 for(int i = 0; i < fileInfo->count(); i++) { //QFileInfo(路徑名的Qstring字符串).filename可以直接取到路徑中的文件名 qDebug() << fileInfo->at(i).fileName(); }
————————————————
版權聲明:本文為CSDN博主「Sakuya__」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Sakuya__/article/details/87806135