Qt檔案操作詳解(建立、寫入、刪除、INI、XML檔案等)
阿新 • • 發佈:2019-02-16
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("檔案不存在");
}