1
这里是我的代码片段Qt的调整文件大小在Linux的古怪行为
QFile temfile(fileUrl);
if(temfile.open(QIODevice::WriteOnly) == false)
{
qDebug()<<"Unable to create file!";
return;
}
if(temfile.resize(5073741824) == false) // 5GB
{
qDebug()<<"Insufficient disk space!";
return;
}
temfile.close();
现在在Windows上,如果NTFS文件系统有超过5GB的硬盘空间少,它显示
Insufficient disk space!
但在Linux( Ubuntu 12.10)文件被调整大小,即使有更少的空间。在右键单击属性文件大小甚至显示为5GB,但它不以某种方式计算。由于上面的代码检查失败,我可以创建任意数量的5GB文件。
当我开始写入文件(假设200MB)时,只有大小占200MB,但显示为5GB。
有没有解决方案?我希望这表现得像在Windows上一样。
编辑:那么按照佩普的答案这里是工作代码:
QFile temfile(fileUrl);
if(temfile.open(QIODevice::WriteOnly) == false)
{
qDebug()<<"Unable to create file!";
return;
}
#ifdef Q_OS_LINUX
if(fallocate(temfile.handle(), 0, 0, 5073741824) < 0)
{
qDebug()<<"Insufficient disk space!";
return;
}
#else
if(temfile.resize(5073741824) == false)
{
qDebug()<<"Insufficient disk space!";
return;
}
#endif
temfile.close();
感谢工作像一个魅力 – 2014-09-02 14:11:54