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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

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

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

1. 小文件文件的讀寫

1.1 讀取文件中所有的數(shù)據(jù)

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

1.2 一行一行的讀取文件的數(shù)據(jù)

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

// 每讀取一行數(shù)據(jù),游標(biāo)seek會(huì)自動(dòng)往下跳,所以當(dāng)seek到達(dá)末尾是atEnd()返回true
QByteArray data =  file.readLine();  
}
file.close();

1.3 將數(shù)據(jù)寫入文件中

	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 通過(guò)內(nèi)存映射讀寫文件

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

// do work 
// memcpy(pfile,data.data(),size); // 寫入數(shù)據(jù)
// memcpy(data.data(),pfile,size); // 讀取數(shù)據(jù)
file.unmaps(pfile); // 取消映射 其實(shí)QFile對(duì)象被摧毀或者打開一個(gè)新的文件會(huì)自動(dòng)取消映射
}
file.close();

2. 大文件的讀寫

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

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

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。