如何在Java中将文件/dir移动到回收站,而不是永久删除它
我试图创建一个GUI示例,当用户单击按钮时删除文件和/或目录,但我看到文件被永久删除,如何让它移动到回收站而不是这个如何在Java中将文件/dir移动到回收站,而不是永久删除它,java,swing,file,java-8,java-7,Java,Swing,File,Java 8,Java 7,我试图创建一个GUI示例,当用户单击按钮时删除文件和/或目录,但我看到文件被永久删除,如何让它移动到回收站而不是这个 if (File_path.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Please select a file or directory", "Info", JOptionPane.INFORMATION_MESSAGE); } else { File Fil
if (File_path.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Please select a file or directory", "Info", JOptionPane.INFORMATION_MESSAGE);
} else {
File FileName = new File(File_path.getText());
boolean FileDeleted = FileName.delete();
if (FileDeleted == true) {
JOptionPane.showMessageDialog(null, "File Deleted Successfully", "Info", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "File Not Found", "Info", JOptionPane.INFORMATION_MESSAGE);
}
}
实际上,这是一个被触发但被忽略的bug,因为开发人员认为,如果添加了“移动到回收站”功能,它将不兼容跨平台。你可以读到它 使用C++:但您可以使用
外部API
。在JNI
的帮助下,调用WindowsSHFileOperation
API,在SHFILEOPSTRUCT
结构中设置fou DELETE
标志
这是我的建议
使用JAVA:使用[com.sun.jna.platform.win32.W32FileUtils
],它定义了moveToTrash
和hasTrash
方法
另一种方法是使用com.sun.jna.platform.FileUtils代码>
示例代码:
import java.io.File;
import java.io.IOException;
import com.sun.jna.platform.FileUtils;
public class MoveToTrash {
public static void main(String[] args){
FileUtils fileUtils = FileUtils.getInstance();
if (fileUtils.hasTrash()) {
try {
fileUtils.moveToTrash( new File[] {new File("c:/folder/abcd.txt") });
}
catch (IOException ioe) {
ioe.printStackTrace();
}
}
else {
System.out.println("No Trash available");
}
}
}
@Eugene我从8年前就看到了这个答案,可能因为删除一个文件排了很长的一行(大约25行)而感到困惑@DRIDO检查编辑:请:只要……这个引用解释如何在C++上不这样做Java@DrMido添加了Java部件:)。您的问题不重复,但仍标记为重复:/。如果这作为解决方案让我满意,请让我知道:)迷你们我没有对你的评论投反对票,无论如何,你能在这里编辑你的评论吗“你可以阅读”我找不到这个bug的链接