日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

7. QFile读写文件的基本操作「建议收藏」(官方中文网站)

發布時間:2023/12/19 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 7. QFile读写文件的基本操作「建议收藏」(官方中文网站) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 小文件文件的讀寫

1.1 讀取文件中所有的數據

	QFile file(fileName); // fileName文件的路徑
if(file.open(QIODevice::ReadOnly))  // 以讀寫的方式打開文件
return ;	
QByteArray data = file.readAll();  //方式1. 將文件的數據全部讀取出來
int fileSize = file.size();   	   // 獲取文件的長度(單位:字節)
data = file.read(fileSize);        // 方式2. 將文件的所有數據讀取出來
// 從指定的位置開始讀取
file.seek(100) // 這是設置從100的位置讀取
data = file.read(1000) // 從100的位置讀取1000個字節
file.close();                      // 使用完畢把文件關閉

1.2 一行一行的讀取文件的數據

	QFile file(fileName); // fileName文件的路徑
if(file.open(QIODevice::ReadOnly))  // 以讀的方式打開文件
return ;
while(!file.atEnd()) // 判斷文件是否結束
{ 

// 每讀取一行數據,游標seek會自動往下跳,所以當seek到達末尾是atEnd()返回true
QByteArray data =  file.readLine();  
}
file.close();

1.3 將數據寫入文件中

	QFile file(fileName); // fileName文件的路徑
if(file.open(QIODevice::WriteOnly))  // 以寫的方式打開文件
return ;
QByteArray data ;
data.resize(10);
memset(data.data(),0x00,data.size());
file.write(data);
file.close();

1.4 通過內存映射讀寫文件

uchar *QFileDevice::map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions)
  1. 從offset開始將文件大小字節映射到內存中。為了使映射成功,應該打開一個文件,但在映射內存之后,文件不需要保持打開狀態。當QFile被銷毀或使用此對象打開一個新文件時,任何未被取消映射的映射將自動取消映射。
  2. 映射將具有與文件相同的打開模式(讀和/或寫),除非使用MapPrivateOption,在這種情況下,總是可以寫入映射的內存。
  3. 返回一個指向內存的指針,如果有錯誤則返回0。
	QFile file(fileName); // fileName文件的路徑
if(file.open(QIODevice::WriteOnly))  // 以寫的方式打開文件
return ;
uchar* pfile = file.map(0, file.size());  // 返回一個指向內存的指針,如果有錯誤則返回0
if(pfile)
{ 

// do work 
// memcpy(pfile,data.data(),size); // 寫入數據
// memcpy(data.data(),pfile,size); // 讀取數據
file.unmaps(pfile); // 取消映射 其實QFile對象被摧毀或者打開一個新的文件會自動取消映射
}
file.close();

2. 大文件的讀寫

在進行大文件讀寫是采用分段讀寫的思想,將大文件所有拆成一塊一塊的讀寫。

	QFile file(fileName); // fileName文件的路徑
if(file.open(QIODevice::WriteOnly))  // 以寫的方式打開文件
return ;
qint64 fileSize = file.size(); // 文件的長度
int readSize = 1024*1024 ;  // 每一次讀取的數據長度,可以自由設置
// file.pos()獲取文件游標的位置
while(!file.atEnd())  
{ 

QByteArray data = file.read(readSize )
} 
file.close();

總結

以上是生活随笔為你收集整理的7. QFile读写文件的基本操作「建议收藏」(官方中文网站)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。