1. 程式人生 > >Qt檔案讀寫操作

Qt檔案讀寫操作

if(file.open(QIODevice::WriteOnly)

file.write("hello Qt");

file.close();

以讀的方式開啟

if(file.open(QIODevice::ReadOnly))
{
    QString str = file.readAll();
    qDebug() << str;
}

當然也有其它兩種方式來實現讀/寫檔案

1.使用文字流讀寫文字檔案
QFile file("myFile.txt);

if(file.open(QIODevice::WriteOnly))
{
    QTextStream out(&file);
    out << "Hello Qt" << 123;

}

if(file.open(QIODevice::ReadOnly))
{
    QTextStream in(&file);
    while(in.atEnd())
    {
        QString str;
        str = in.readLine();
        qDebug() << str;    
    }
}

2.使用資料流來讀寫二進位制檔案
QFile file("myFile.txt");

if(file.open(QIODevice::WriteOnly))
{
    QDataStream out(&file);
    out << QString("hello Qt") << 123; //以二進位制形式儲存,開啟是亂碼,必須使用下面的方法進行記取

}

if(file.open(QIODevice::ReadOnly))
{
    QDataStream in(&file);
    QString str;
    in >> str;
    qDebug() << str;

}


同樣也可以對檔案進行監聽,當檔案或資料夾改變時發生相應的變化


建構函式中寫:
    myWatcher = new QFileSystemWatcher;
    connect(myWatcher,SIGNAL(fileChanged(QString)),this,SLOT(showMessage(QString)));
    connect(myWatcher,SIGNAL(directoryChanged(QString)),this,SLOT(showMessage(QString)));

    QDir myDir(QDir::currentPath());
    ui->listWidget->addItem(myDir.absolutePath()+"當前路徑");


    myDir.setNameFilters(QStringList("*.h"));
    ui->listWidget->addItems(myDir.entryList());

    myDir.mkdir("myDir");
    myDir.cd("myDir");

    ui->listWidget->addItem("監視的目錄"+myDir.absolutePath());
    myWatcher->addPath(myDir.absolutePath());

    QFile file(myDir.absolutePath()+"/myFile.txt");
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
        qDebug() << file.errorString();

    file.write("hello! QT");

    QFileInfo fileInfo(file);
    ui->listWidget->addItem("監視的檔案"+fileInfo.absoluteFilePath());

    myWatcher->addPath(fileInfo.absoluteFilePath());

    file.close();


    
    QFile data("data.txt");

    if(data.open(QFile::WriteOnly | QFile::Text))
    {
        QDataStream out(&data);
        out << QString("dd");
        out << qint32(11);
    }

    data.close();

    if(data.open(QFile::ReadOnly | QFile::Text))
    {
        QDataStream in(&data);
        QString str1;
        qint32 str2;
        in >> str1 >> str2;
        qDebug() <<str1 << str2;
    }
}

void MainWindow::showMessage(const QString &path)
{
    QDir dir(QDir::currentPath()+"/myDir");
    if(path == dir.absolutePath())
    {
        qDebug() << "目錄"+path+"變化";
    }else
    {
        qDebug() << "檔案"+path+"變化";
    }
}




相關推薦

Qt檔案操作 (文章收錄)

操作檔案是各種語言和類庫的基本功能. Qt是如何讀寫檔案的呢? 在Qt的文件有就有答案. 在QFile的文件中指出了幾種操作檔案的方法, 其中QTextStream是比較好理解和使用的: 讀取操作: The next example uses QTextStream to read a text f

Qt檔案操作

if(file.open(QIODevice::WriteOnly) file.write("hello Qt"); file.close(); 以讀的方式開啟 if(file.open(QIODevice::ReadOnly)) {     QString str = f

Qt 檔案操作

 //文列出Qt讀寫檔案常用方式,還有對檔案的一些簡單操作 讀檔案 QString fileName = "D:\Lib\1.txt";QString str;QFile file(fileNam

json.dump json.load與檔案操作

一.寫檔案 info={"name":"李小龍",'age':66,'love':"cat"} fp=open('testdict1.txt','w+',encoding='utf-8') fp.write(info) ls=list('1234567890') # print(ls) f

C/C++檔案操作 —— windowsAPI

轉自:http://blog.sina.com.cn/s/blog_6e7fed390100z0j1.html 基於C的檔案操作 在ANSI C中,對檔案的操作分為兩種方式,即流式檔案操作和I/O檔案操作,下面就分別介紹之。 一、流式檔案操作 這種方式的檔案操作有一個重要的結構

HDFS檔案操作 (通俗易懂)

首先來介紹兩個概念 ▪NameNode:領導級別。管 NameNode:領導級別。管理資料塊對映;處理客戶端的讀寫請求;配置副本策略;管理HDFS的名稱空間; DataNode:員工級別。負責儲存客戶端發來的資料塊block;執行資料塊的讀寫操作。 理資料 寫詳細步驟: 1、首先

React Native檔案操作

最近公司專案要求進行定時上傳位置資訊,及埋點,因為使用的是RN開發,一開始就是想到在Android和Ios原生裡進行操作。 在原生裡面實現了定時任務,Android裡面使用的是broadcastReceive + service + timer實現了。 現在需要生成一個日誌檔案,一開始想在原生裡面進

Python對csv檔案操作

 包括使用csv模組進行檔案讀寫,使用requests模組進行檔案傳送。 def pay_task_by_self(self): global success_writer, fail_writer, cont dir_path = os.path.dirname(_

Android SD卡簡單的檔案操作

Android SD卡簡單的檔案讀寫操作   最近有這樣的需求,把每次統計到的資料,以txt形式儲存到手機SD卡或是手機記憶體中,遇到一些問題,記錄下來。   首先如果要在程式中使用sdcard進行儲存,我們必須要在AndroidManifset.xml檔案進行下

java大檔案操作,java nio 之MappedByteBuffer,高效檔案/記憶體對映

原文地址:https://www.cnblogs.com/lyftest/p/6564282.html   java處理大檔案,一般用BufferedReader,BufferedInputStream這類帶緩衝的Io類,不過如果檔案超大的話,更快的方式是採用MappedByteB

Scala的檔案操作與正則表示式

在本篇部落格中你將會學習並瞭解常用的檔案處理任務,例如讀取檔案的一行文字,本部落格的要點包含: Source.fromFile(...).getLines.toArray 輸出檔案所有行 Source.fromFile(...).mkString 以字串形式輸出檔案內容 將字串轉換為數字,可以使用toI

R語言開發之二進位制檔案操作

二進位制檔案是一個檔案,其中包含僅以位和位元組形式儲存的資訊(0和1),它們是不可讀的,因為其中的位元組轉換為包含許多其他不可列印字元的字元和符號,隨便我們嘗試使用任何文字編輯器讀取二進位制檔案將顯示為類似Ø和ð這樣的字元。 但是二進位制檔案必須由特定程式讀取才能使用。例如

03 -node.js 檔案操作

1、檔案寫入 // 匯入fs模組 const fs = require('fs'); // 寫入String var message = '第一個檔案寫入,hello world!'; // h

Java實現CSV檔案操作

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

Java的檔案操作

                file(記憶體)----輸入流---->【程式】----輸出流---->file(記憶體)當我們讀寫文字檔案的時候,採用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的類是Input

php檔案操作

php操作檔案讀寫  $file_user = 'userfiles.txt';  $data = array(); 讀:  if(file_exists($file_user) && count(file($file_user))>1){    

Unity3D-各平臺檔案操作路徑目錄

public string AssetCachesDir { get { string dir = ""; #if UNITY_E

opencv學習(十七)之XML和YAML檔案操作

可能大部分人到現在接觸的XML和YAML檔案很少,等以後訓練人臉模型進行人臉識別的時候用的就多了。現在先了解一下這兩種檔案型別。 XML:Extensible Markup Language,可擴充套件標記語言,標準通用語言的子集,是一種用於標記電子檔案使其具

C/C++ 檔案操作總結

在程式設計的過程中,檔案的操作是一個經常用到的問題,在C++Builder中,可以使用多種方法對檔案操作,下面我就按以下幾個部分對此作詳細介紹,就是: 1、基於C的檔案操作; 2、基於C++的檔案操作; 3、基於WINAPI的檔案操作; 4、基於BCB庫的檔案操作;

ios 簡單的plist檔案操作(Document和NSUserDefaults)

//    [self getDocoumentsPath];//蘋果建議將程式建立產生的檔案以及應用瀏覽產生的檔案資料儲存在該目錄下,iTunes備份和恢復的時候會包括此目錄 //    [self getLibraryPath];//儲存程式的系統預設狀態設定 //