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