大家好,又见面了,我是你们的朋友全栈君。
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(); // 使用完毕把文件关闭
QFile file(fileName); // fileName文件的路径
if(file.open(QIODevice::ReadOnly)) // 以读的方式打开文件
return ;
while(!file.atEnd()) // 判断文件是否结束
{
// 每读取一行数据,游标seek会自动往下跳,所以当seek到达末尾是atEnd()返回true
QByteArray data = file.readLine();
}
file.close();
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();
uchar *QFileDevice::map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions)
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();
在进行大文件读写是采用分段读写的思想,将大文件所有拆成一块一块的读写。
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();
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136733.html原文链接:https://javaforall.cn