【发布时间】:2014-04-04 11:34:13
【问题描述】:
我不得不更改我没有编写的 Qt 程序。我在代码中找到了该位置并且知道我想要它,但我不知道要更改什么,所以寻求帮助。 代码如下:
QFile file(path);
qint64 size = filesize(path);
qint64 blockSize = 10240;
bool ok = file.open(QIODevice::ReadWrite);
if (ok)
{
QTime t;
t.start();
file.seek(0);
for (int i = 0; i < ceil(double(size) / double(blockSize)); i++)
{
qint64 block = size - i * blockSize;
if (block > blockSize)
{
block = blockSize;
}
QByteArray data;
data.resize(block);
data.fill('0');
file.write(data, block);
}
file.close();
file.remove();
}
这里用零替换文件的内容,因为删除后无法恢复。谷歌搜索我得出了两个结论,要么文件中没有真正的写入,要么将新数据写入其他磁盘扇区,而旧的仍然存在。如何使文件的内容真正被零替换而无法恢复? 任何帮助将不胜感激!
【问题讨论】:
-
绝对不能保证旧块不在磁盘上/在某些备份中。
-
如果您不希望任何人在您不需要文件时读取文件的内容,那么您可能在仍然需要文件时也想要同样的内容。因此,防止任何人读取现有和已删除文件的最简单方法 - 对其进行加密。我知道这不是您所要求的,并且很难安全地加密文件,但这会有所帮助。通常,在您物理融化磁盘之前,您无法确定文件是否无法恢复。