永久删除文件C++

Permanently Delete File C++

本文关键字:C++ 文件 删除      更新时间:2023-10-16

我遇到了一个简单的问题,找不到简单的解决方案。我试图永久删除一个文件。我不是在寻找让数据不可恢复的最理想的方法,我只是不想它被放在回收站里。我有两个问题。

  1. 这是获取回收站路径的方法吗?这个想法是,一旦我有了路径,我就可以使用remove()从那里永久删除它。以下操作对我来说失败了,返回了一个完全不同的路径,而不是回收站的路径。也许我错过了一场辩论。

    char RecycleBin[_MAX_PATH];   
    SHGetSpecialFolderPath(NULL, RecycleBin, CSIDL_BITBUCKET, FALSE);
    
  2. 是否有win32api调用来永久删除文件?

感谢阅读。

编辑1:

根据下面的答案,我一直在使用_unlink ()函数,但它的行为并没有完全达到我想要的效果。我需要一些东西来获取Desktop,然后向该字符串中添加一个文件,并将该字符串传递到一个函数中,该函数将删除该文件作为参数。以下是我如何尝试使用unlink。如果我这样取消链接-它起作用:

char path [] = "C:\Users\testuser\Desktop\test.dat";
_unlink( path );

然而,如果我用以下两种方式尝试,它就会失败。

char DesktopPath[_MAX_PATH];
SHGetSpecialFolderPath(NULL, DesktopPath, CSIDL_DESKTOPDIRECTORY, FALSE);
strcat ( DesktopPath, "\test.dat" );
_unlink ( DesktopPath );

这种方式(添加引号)也会失败。

char DesktopPath[_MAX_PATH];
char final_path [] = """;
char quotes [] = """;
SHGetSpecialFolderPath(NULL, DesktopPath, CSIDL_DESKTOPDIRECTORY, FALSE);
strcat ( DesktopPath, "\test.dat" );
strcat ( DesktopPath, quotes );
strcat ( final_path, DesktopPath );
_unlink ( final_path );

以上两种方法都可以很好地编译和运行,但实际上并没有消除文件。有什么想法吗?

使用POSIX函数unlink(对于MSVC2005+为_unlink)。

_unlink("file.ext"); //delete file without sending to Recycle Bin