2017-03-07 33 views
2

我想創建刪除文件和/或目錄的GUI的示例當用戶單擊按鈕時,但我發現文件永久刪除,如何使移動到回收站,而不是這個如何將文件/目錄移動到Java回收站而不是永久刪除

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); 
     } 
    } 
+0

@Eugene我看到這個答案,因爲8年,這可能會混淆,由於線路長(約25℃)來刪除一個文件! –

+0

@DrMido檢查編輯請:) – minigeek

+1

只要[直到Java 9](https://docs.oracle.com/javase/9​​/docs/api/java/awt/Desktop.html#moveToTrash-java。 io.File-)... – Holger

回答

1

其實,這是射擊,但被忽視的,因爲開發商認爲它won't be cross-platform-compatible如果添加移動到回收站功能的錯誤。你可以閱讀關於它here

使用C++:但你可以用External APIs做。在JNI的幫助下,調用Windows SHFileOperation API,在SHFILEOPSTRUCT結構中設置FO_DELETE標誌。

這裏的Reference

使用JAVA:使用[com.sun.jna.platform.win32.W32FileUtils],其具有限定moveToTrashhasTrash方法。

另一種方法是使用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"); 
    } 
} 
} 
+0

此參考文獻解釋瞭如何在C++而不是Java中執行此操作 –

+0

@DrMido添加了Java部分:)。你的問題不重複仍然標爲重複:/。如果這滿足作爲解決方案,讓我知道:) – minigeek

+0

minigeek我沒有投票否定您的評論,無論如何,你可以編輯你的評論在這裏「你可以閱讀關於它」我找不到這個錯誤的鏈接 –

相關問題