Java重命名旧目录或删除旧目录以创建新目录

Java重命名旧目录或删除旧目录以创建新目录,java,directory,Java,Directory,我正在处理的面板有问题,我正在处理的是,每当从一个版本的软件升级到另一个版本时,windows计算机上较旧的“开始”菜单组仍会显示。我试着看看是否可以先删除旧目录,然后创建新目录,但所发生的只是旧目录仍然保留着。我真的不知道该怎么做我只需要在“开始”菜单组中的一个目录来显示我是删除还是重命名旧的 以下是我到目前为止删除旧系统变量的内容。这是我正在努力的事情,我知道它并不完美,但任何帮助都将不胜感激。如果你需要解释,我很乐意接受。多谢各位 if ( PrioGlobals.UPGRADE ){

我正在处理的面板有问题,我正在处理的是,每当从一个版本的软件升级到另一个版本时,windows计算机上较旧的“开始”菜单组仍会显示。我试着看看是否可以先删除旧目录,然后创建新目录,但所发生的只是旧目录仍然保留着。我真的不知道该怎么做我只需要在“开始”菜单组中的一个目录来显示我是删除还是重命名旧的

以下是我到目前为止删除旧系统变量的内容。这是我正在努力的事情,我知道它并不完美,但任何帮助都将不胜感激。如果你需要解释,我很乐意接受。多谢各位

 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();
           }        

如果我正确阅读了您的代码,
oldstartmenus
是一个目录吗?在这种情况下,
oldstartmenus.delete()
可能会失败,因为目录不是空的(请参阅),在这种情况下,您需要递归删除目录及其所有文件

在这一点上,我建议包括commons io并使用一个目录实用程序,如或

[更新]

一旦将commons io库添加到项目中,您将

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

// ...

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

您试图删除的目录是否为空?您是否可能在某个地方吞下了关联的异常?遗憾的是,目录不是空的,它已添加了文件。不,我没有给它添加异常。是的,oldStartMenu是一个目录,它不是空的,谢谢你给我指出这些示例。您推荐哪一个更适合forceDelete或deleteDirectory?两者都可以。如果您确定它是一个目录,请使用deleteDirectory。如果它可能是一个文件或目录,请使用forceDelete.it它是一个目录。它会删除目录中的所有内容,对吗?你能举个例子说明我会怎么做吗?我不太理解你在deletedirectory上给我看的例子。如果我不能使用commons io FileUtils?我该怎么用另一种方式写呢?你得自己写。当然,很容易找到FileUtils.java的源代码。您可以查看deleteDirectory的源代码,并了解它们是如何实现的。并不是说我会建议只删除源代码,因为这可能会侵犯版权。