1、不能在沒有對應目錄的情況下新建檔案,qfile只會新建檔案,qdir才會新建資料夾
例:在沒有新建目錄newdir的情況下,直接新建檔案newfile(qfile file("newdir/newfile"))結果失敗
2、如果對應目錄存在,newfile不存在,使用以下2行**,檔案newfile依然不會生成
qfile file("newfile");
file.open(qiodevice::readwrite);
qt下如果要建立這個新檔案,還需要呼叫close(),這個時候newfile才會被建立
完整的**為
qfile file("newfile");
file.open(qiodevice::readwrite);
file.close();
3、如果想通過改變當前路徑的方法,在指定目錄下新建檔案
system("cd /home/dingxy/new ");//或者qdir::setcurrent("/home/dingxy/new ");
qfile file("newdir/newfile");
在/home/dingxy/new目錄下不一定存在newfile檔案,因為以上2個函式不一定執行成功,需要檢視system()函式和setcurrent()函式執行的結果,確認返回值正確後,新建檔案操作才會成功
二進位制檔案的讀寫,適合各種資料型別的讀寫,寫入和讀出的順序需相同,當寫入資料種包含qstring型資料時,在使用seek()進行調轉時要尤其注意,qstring型資料的長度不是固定的4個位元組,而是實際長度
char head;
int hsize = sizeof(head);
qfile file("name");
file.open(qiodevice::readwrite);
寫入:
file.write((char *)&head, hsize);
讀出:
file.seek(0);
file.read((char *)&head,hsize);
qfile file;
file.setfilename("site");
file.open(qiodevice::readwrite);
qdatastream stream(&file);
寫入:
qint8 a = 10;
qint8 b;
stream << a;
讀出:
stream->seek(0);
stream >> b;
file.close();
//b = 10;
適合所有資料型別寫入,但若乙個檔案內寫入多條資料,但若寫入qstring型資料,在使用seek()進行跳轉時,一定要非常注意,由於qstring的隨實際寫入的資料長度變化,qstring所佔的空間不一定是4個位元組,需要注意資料長度問題。
可以通過每次跳轉固定長度的方式解決
若認定為name的長度不超過8個位元組
qstring name = "aaabbb";
qstring names;
如果想在第17個位元組處寫入name;
stream << (qint64)0 <<(qint64)0 <<(qint64)0;
stream.device()->seek(16);
stream << name;
stream.device()->seek(16);
stream >> names;//names = "aaabbb";
txt文字檔案的讀寫,適合qstring,qintx等資料型別的讀寫,char型寫入時,要注意資料轉換,否則會顯示亂碼
寫入和讀出的順序需相同,當寫入資料種包含qstring型資料時,在使用seek()進行調轉時要尤其注意,qstring型資料的長度不是固定的4個位元組,而是實際長度
qfile file;
file.setfilename("site");
file.open(qiodevice::readwrite);
qtextstream stream(&file);
寫入:
char a = 10;
qstring temp;
char b;
stream << qint8(a);
讀出:
stream->seek(0);
stream.device() >> temp;
file.close();
b = temp.toint()- 48;//ascii碼轉換
//b = 10;
讀出:
qstring line = stream.readline();//讀出一行
中文字元寫入時,可用streams << qobject::trutf8("操作型別編碼") 寫入
寫入檔案的時候發現乙個問題,在arm開發板上掛載優盤進行讀寫操作後,若不執行umount,直接拔下優盤,可能導致資料丟失
解決方法:
umount /dev/sdb1
docfsck -a -v /dev/sdb1
Qt讀寫檔案
1 標頭檔案 include include include 2 寫 前工作 在ui介面拖入2個button按鈕和1個textedit,如下圖所示,並分別新增button的槽函式 3 讀檔案 1 void mywidget on readbutton clicked 215 ui textedit ...
Linux下檔案讀寫示例
1.對於fread或fwrite檢視man手冊,其中要注意返回值。2.上述兩個函式第二個引數如果是1,那麼返回值即實際傳輸長度,如果返回值是0,一般表示檔案傳完 如果返回值等於需要傳輸長度,那麼正常 如果返回值小於指定傳輸長度,那麼有可能是最後一次傳輸,因為到達檔案尾,也有可能是傳輸錯誤 如果第二個...
Qt讀寫ini檔案
ini 檔案是 initialization file 的縮寫,即初始化檔案。除了windows 現在很多其他作業系統下面的應用軟體也有.ini 檔案,用來配置應用軟體以實現不同使用者的要求。一般不用直接編輯這些 ini 檔案,應用程式的圖形介面即可操作以實現相同的功能。它可以用來存放軟體資訊,登錄...