2012-10-31 51 views
1

我遇到一個問題,我正在處理的面板上,我正在處理的是每當有一個軟件版本升級到另一個版本時Windows機器上的開始菜單組仍然顯示。我試圖看看是否可以先刪除舊的目錄,然後再創建新的目錄,但所有發生的都是舊的目錄。不知道如何去做,我需要的僅僅是開始菜單組中的一個目錄,以顯示我刪除或重命名舊的天氣。Java重命名舊目錄或刪除它以創建一個新目錄

這是我到目前爲止刪除舊的系統變量。這是我正在工作的東西,我知道它不完美,但任何幫助,將不勝感激。如果你需要解釋,我會很樂意遵守。謝謝

if (PrioGlobals.UPGRADE){ 
     oldm_txtGrpName.setText(PrioGlobals.StartMenuFolder); 
    } 

if (PrioGlobals.UPGRADE){ 
      String oldShortCutPath = PrioGlobals.cre.getShorcutDirectory(); 
      String oldStartMenuGroupFolderPath = oldShortCutPath + File.separator + BrandStrings.WIN_FOLDER_NAME + 
     File.separator +oldm_txtGrpName.getText(); 

      File oldStartmenu = new File(oldStartMenuGroupFolderPath); 
      if (oldStartmenu.exists()) 
      { 
       oldStartmenu.delete(); 
      } 
      else 
       oldStartmenu.delete(); 
      }   
+0

是你試圖刪除空的目錄嗎?你可能在某處吞下關聯的異常嗎? –

+0

這個目錄不是很遺憾,它添加了文件。不,我沒有添加例外。 –

回答

2

如果我正確讀取您的代碼,oldStartmenu是一個目錄?在這種情況下,oldStartmenu.delete()可能會因目錄不爲空而失敗(請參閱File delete)。在這種情況下,您需要遞歸刪除目錄及其所有文件。

在這一點,我會建議,包括公共-io的FileUtils和使用目錄實用程序,如forceDeletedeleteDirectory

[更新]

一個一旦你已經添加的commons-IO庫項目你會

// import FileUtils 
import org.apache.commons.io.FileUtils; 

// ... 

if (oldStartmenu.exists()) 
{ 
    FileUtils.deleteDirectory(oldStartmenu); 
} 
+0

是的oldStartMenu是一個目錄,它不是空的,謝謝你指向我的例子。你會推薦哪一個更好的forceDelete或deleteDirectory? –

+1

要麼應該工作。如果你確定它是一個使用deleteDirectory的目錄。如果它可能是一個文件或目錄使用forceDelete。 –

+0

其目錄。它會刪除目錄中的所有內容嗎?你能提供一個我如何做的例子嗎?我對你在deletedirectory上顯示的例子不太瞭解。 –