当回收站满时,ShFileOperation会做什么?

7
我使用以下步骤:

function MoveToRecycle(sFileName: widestring): Boolean;
var
  fos: TSHFileOpStructW;
begin
  FillChar(fos, SizeOf(fos), 0);
  with fos do
  begin
    wnd := 0;
    wFunc  := FO_DELETE;
    pFrom  := PWideChar(sFileName + #0 + #0);
    pTo := #0 + #0;
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
  end;
  Result := (ShFileOperationW(fos) = 0);
end;

如果回收站已满,会发生什么情况?它会返回 false 还是永久删除文件?非常感谢您的帮助。

将您的代码缩进四个空格,以使其正确显示。 - Anon.
我不知道回收站会“满”。那是怎么回事? - Mason Wheeler
顺便说一下 - 不错的函数。其实知道如何移动到回收站还是很有用的。我总是只使用“deletefile”函数。 - M Schenkel
Mason - 你可以将回收站设置为磁盘驱动器空间的“百分比”。但是据我所知,至少使用该函数时,它不会填满,而是在没有更多可用空间时推出最旧的删除文件。 - M Schenkel
顺便说一下,你三重地使用了空字符终止路径。你比需要的多一个空字符。 - David Heffernan
1个回答

3

找出最好的方法就是实际去做。将我的回收站设置为驱动器的最小值为1%。创建一些大文件并使用您的函数将它们移动到回收站。

我发现(至少在XP上)这个功能总是将文件移动到回收站;但是永久删除最旧的删除文件。因此,当回收站填满时,它似乎采用“先进先出”的方法来决定要排除哪个文件。

我无法使该函数返回false。也许创建一个太大以适应分配的回收站的文件可以做到这一点。


如果客户非常重视将文件保留在回收站中,为什么他不取消回收站限制呢? - jpfollenius
他是一个常规用户,所以我猜他不知道那件事。 - Irwan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接