2014-04-27 69 views
1

我一直試圖從一個按鈕的按鈕上刪除一個文件,但它似乎總是失敗。我知道我從jlist獲得的路徑是正確的,因爲我能夠打開文件,並且我也嘗試使用此代碼使用絕對路徑刪除文件。有人在這裏看到任何錯誤或我做錯了什麼?刪除文件總是失敗

JButton btnDeleteLog = new JButton("Delete Log"); 
btnDeleteLog.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     try{ 
      File file = new File("C:/ProgramData/Logs/" + selectedJLItem); 
      file.delete(); 
      if(file.delete()){ 
       System.out.println(file.getName() + " Was deleted!"); 
       ClientWindow.console(file.getName() + " Was Deleted Successfully!"); 
      }else{ 
       System.out.println("Delete Operation Failed. Check: " + file); 
       ClientWindow.console("Failed To Delete " + file.getName()); 
      } 
     }catch(Exception e1){ 
      e1.printStackTrace(); 
     } 
    } 
}); 
+0

所以'file.delete()'返回'false'?這個文件的名字是什麼?是否有其他進程正在使用它? –

+0

第一個chk如果可以通過使用isExist和chk來訪問(如果它沒有被任何其他程序打開) – niiraj874u

+0

將file.delete()的返回值存儲在一個布爾值中,並檢查布爾值而不是調用刪除兩次。 – Benjamin

回答

7

您試圖刪除一個文件兩次。

第一:

file.delete();

二:

if(file.delete()){ // some processing here }

相反,嘗試這樣做:

public class Example { 
    public static void main(String[] args) { 
     try{ 
      File file = new File("C:/ProgramData/Logs/" + selectedJLItem); 

      if(file.delete()){ 
       System.out.println(file.getName() + " Was deleted!"); 
      }else{ 
       System.out.println("Delete Operation Failed. Check: " + file); 
      } 
     }catch(Exception e1){ 
      e1.printStackTrace(); 
     }  
    } 
} 

這是正確的方式,你會得到:

Example.txt Was deleted!

+0

是的,我發佈了幾個小時後發現了這個問題,它不會讓我爲自己回答8小時或其他問題。奇怪的是文件從來沒有被刪除(我找它,而不是依靠sysout),直到我刪除了第一個刪除()。 – Coinreturn