1. 程式人生 > >Qt檔案操作詳解(建立、寫入、刪除、INI、XML檔案等)

Qt檔案操作詳解(建立、寫入、刪除、INI、XML檔案等)

1、建立資料夾
標頭檔案:

#include <QDir>
#include <QMessageBox>

核心程式碼如下:

    //例項QDir
    QDir *folder = new QDir;
    //判斷建立資料夾是否存在
    bool exist = folder->exists("D:/NewFolder");
    if(exist)
    {
        QMessageBox::warning(this,tr("建立資料夾"),tr("資料夾已經存在!"));
    } 
    else //如果不存在,建立資料夾
{ //建立資料夾 bool ok = folder->mkdir("D:/NewFolder"); //判斷是否成功 if(ok) { QMessageBox::warning(this,tr("建立資料夾"),tr("資料夾建立成功!")); } else { QMessageBox::warning(this,tr("建立資料夾"),tr("資料夾建立失敗!")); } }

2、寫入檔案:
標頭檔案:

#include <QMessageBox>
#include <QFile>

核心程式碼如下:

    //例項QFile
    QFile file("D:/Qt.txt");  
    //定義檔案內容字串
    QString content= "寫入檔案的內容";
    //判斷檔案是否存在
    if(file.exists())
    {
        QMessageBox::warning(this,"建立檔案","檔案已經存在!");
    }else
    {
        //存在開啟,不存在建立
file.open(QIODevice::ReadWrite | QIODevice::Text); //寫入內容,這裡需要轉碼,否則報錯。 QByteArray str = content.toUtf8(); //寫入QByteArray格式字串 file.write(str); //提示成功 QMessageBox::warning(this,"建立檔案","檔案建立成功!"); } //關閉檔案 file.close();

3、修改檔案內容:
標頭檔案:

#include <QFileDialog>
#include <QMessageBox>
#include <QTextStream>
#include <QTextCodec> 
#include <QFile>

核心程式碼如下:

    //瀏覽檔案
    //定義變數str接收QFileDialog對話方塊獲取的檔案路徑 
    QString str = QFileDialog::getOpenFileName(this,"open file","/","text file(*.txt);;C file(*.cpp);;All file(*.*)"); 
    //檔案路徑轉換為utf8格式
       QString str_utf8 =str.toUtf8();
       //判斷是否選擇檔案
       if(str_utf8.isEmpty())
       {
           return;
       }  
       //設定檔案路徑
       QFile file(str_utf8);
       //判斷檔案是否開啟成功
       if(!file.open(QIODevice::ReadOnly|QIODevice::Text))
       {
           QMessageBox::warning(this,"開啟檔案","開啟檔案失敗!");
           return;
       } 
       //檔案流
       QTextStream ts(&file); 
       //獲取檔案中的資料
       QString str_get;
       //迴圈文件資料至結尾
       while(!ts.atEnd())
       {
           //將全部資料繫結str_get
            str_get = ts.readAll();
       }
       //關閉文件
       file.close();

    //儲存檔案,此段函式置於另一個槽函式
        QFile file(str_utf8);
        file.open(QIODevice::ReadWrite | QIODevice::Text);
        //寫入內容,這裡需要轉碼,否則報錯。
        QByteArray strb = str_get.toUtf8();
        //寫入QByteArray格式字串
        file.write(strb);
        //提示成功
        QMessageBox::warning(this,"修改檔案","檔案修改成功!");
        file.close();

4、刪除檔案:
標頭檔案:

#include <QMessageBox>
#include <QFile>
#include <QFileDialog>

核心程式碼如下:

    QString str = QFileDialog::getOpenFileName(this,"選擇檔案","/","text 
file(*.txt);;C file(*.cpp);;All file(*.*)");
    //轉換檔案路徑
    QString get = str.toUtf8();
    //刪除檔案
    QFile::remove(get);  
    //提示
    QMessageBox::warning(this,"刪除檔案","刪除成功!");

5、修改檔名
標頭檔案:

#include <QFileDialog>
#include <QMessageBox>

核心程式碼如下:

    //新檔名 
    QString new = "Qt檔案操作詳解"//定義變數str接收QFileDialog對話方塊獲取的檔案路徑
    QString str = QFileDialog::getOpenFileName(this,"open file","/","text 
file(*.txt);;C file(*.cpp);;All file(*.*)");
    //轉換檔案路徑
    QString get = str.toUtf8(); 

    //例項QFileInfo函式
    QFileInfo file(get);
    //獲取檔案路徑
    QString path = file.absolutePath();
    //bool型變數接收是否修改成功成功true,不成功false。
    bool x = QFile::rename(get,path + "/" + new);
    if(x)
    {
        QMessageBox::warning(this,"修改檔名","檔案修改成功!");
    }else
    {
        QMessageBox::warning(this,"修改檔名","檔案修改失敗!");

6、INI檔案寫入操作:
對於INI檔案,搜狗百科的解釋:

.ini檔案是InitializationFile的縮寫,即初始化檔案,是windows的系統配置檔案所採用的儲存格式,統管windows的各項配置,一般使用者就用windows提供的各項圖形化管理介面就可實現相同的配置了。除了windows現在很多其他作業系統下面的應用軟體也有.ini檔案,用來配置應用軟體以實現不同使用者的要求。一般不用直接編輯這些.ini檔案,應用程式的圖形介面即可操作以實現相同的功能。它可以用來存放軟體資訊,登錄檔資訊等。

簡言之,INI檔案普遍作為配置檔案使用。
標頭檔案:

#include <QSettings>

核心程式碼如下:

QSettings *writeIni;
//QSettings 建構函式的第一個引數是 ini 檔案的路徑,第二個引數表示針對 ini 檔案
writeIni = new QSettings("D:/CSDN.ini", QSettings::IniFormat);
//寫入鍵、值
writeIni->setValue("node"+"/"+"ip","192.168.1.1");
//寫入完成刪除指標
delete writeIni;

7、INI檔案讀取操作
標頭檔案:

#include <QSettings>

核心程式碼如下:

QSettings *readIni; 
QTextEdit *valEdit = new QTextEdit(this);
//QSettings 建構函式的第一個引數是 ini 檔案的路徑,第二個引數表示針對 ini 檔案
readIni = new QSettings("D:/CSDN.ini", QSettings::IniFormat);
/*將讀取到的 ini 檔案儲存在 QString 中,先取值,然後通過 toString()函式轉換成QString型別*/ 
QString key = "鍵值";
QString ipResult = readIni->value("node"+"/"+key).toString();
//將結果繫結 IP 值控制元件上
valEdit->setText(ipResult);
//寫入完成刪除指標
delete readIni;

8 建立 XML 檔案
標頭檔案:

#include <QFile>
#include <QXmlStreamWriter>

核心程式碼如下:

//檔案路徑
QString xmlPath = "D:/Qter.xml";
QFile file(xmlPath);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
//例項 QXmlStreamWriter
QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true);
//文件頭
stream.writeStartDocument();
//根節點
stream.writeStartElement("Root");
//元素、值
stream.writeAttribute("href", "http://www.csdn.com/");
//節點內容
stream.writeTextElement("title", "Qt Home");
stream.writeEndElement();
stream.writeEndDocument();
//關閉檔案
file.close();

9、 讀取 XML 檔案
標頭檔案:

#include <QFile>
#include <QXmlStreamWriter>

核心程式碼如下:

QLabel *resultL = new QLabel(this);
QString xmlPath = "D:/Qter.xml";
QFile file(xmlPath);
//定義變數接收資訊
QString str;
//判斷檔案是否存在
if(file.exists())
{
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
//例項 QXmlStreamReader 物件讀取檔案
QXmlStreamReader xmlRead(&file);
//迴圈節點
while (!xmlRead.atEnd())
{
//指標下移
xmlRead.readNext();
if(xmlRead.isStartElement())
{
//如果節點有等於 title 的
if(xmlRead.name() == "title")
{
//取 title 值賦予變數 str
str = xmlRead.readElementText();
}else
{
str = "沒找到節點";
}
}
}
//將值繫結 QLabel 控制元件顯示
resultL->setText(str);
}else
{
resultL->setText("檔案開啟失敗");
}
//關閉檔案
file.close();
}else
{
resultL->setText("檔案不存在");
}