Java是关键.我需要能够删除文件,但用户希望能够从回收站"取消删除".据我所知,这是不可能的.有人知道吗?
Joh*_*ley 25
由于各种原因,Windows 没有对应于回收站的文件夹的概念.
正确的方法是使用JNI调用Windows SHFileOperationAPI,FO_DELETE在SHFILEOPSTRUCT结构中设置标志.
Hol*_*ger 14
十年后,使用Java 9,最终有一种将文件移动到垃圾箱的内置方法
java.awt.Desktop.moveToTrash(java.io.File):
public boolean moveToTrash?(File file)将指定的文件移动到废纸篓.
参数:
file - 文件
返回:
如果成功将文件移动到废纸篓,则返回true.
可以使用此功能测试底层平台的此功能的可用性Desktop.isSupported?(Desktop.Action.MOVE_TO_TRASH).
小智 5
Java 9 有新方法,但就我而言,我仅限于 Java 8。我发现Java Native Access Platform具有hasTrash()和moveToTrash()方法。我在 Win 10 和 Mac OS 上对其进行了测试(有效)。
static boolean moveToTrash(String filePath) {
File file = new File(filePath);
FileUtils fileUtils = FileUtils.getInstance();
if (fileUtils.hasTrash()) {
try {
fileUtils.moveToTrash(new File[] { file });
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
} else {
System.out.println("No Trash");
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Maven 存储库 https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform/5.1.0
不要混淆它是Java Native Access Platform而不是Java Native Access