0

我的文件系统中有一个 .war 文件。我尝试按如下方式删除,

private void deleteWar(File warFile){       
 if(warFile.list().length != 0){
    String files[] = warFile.list();
    for (String temp : files) {                 
            File fileDelete = new File(warFile, temp);                  
            deleteWar(fileDelete);
    }               
    if(warFile.list().length==0){
        warFile.delete();
        System.out.println("Directory is deleted : " + warFile.getAbsolutePath));        
         }
     }              
 }

但我无法将 .war 文件删除为 java.io.File.So 有什么方法可以删除 .war 文件。

谢谢

4

4 回答 4

2

您需要的唯一代码是warFile.delete().

试图列出 .war 文件的内容就像它是一个目录一样是没有意义的。它不是。

只需删除文件。如果它是打开或锁定的,或者您没有权限,它可能会失败,所以请调查一下。

于 2012-09-17T07:51:33.783 回答
0

删除war文件有很多问题。

我假设您正在运行像 tomcat 或 jetty 这样的 Web 应用程序容器。如果你在 windows 机器上运行这个容器,war 文件可能会被 windows 锁定,并且你无法在容器运行时删除文件。

尝试在 tomcat 容器中锁定反战文件:http: //tomcat.apache.org/tomcat-6.0-doc/config/context.html

搜索资源锁定。

正如@EJP 提到的: file.delete() 是您所需要的。

于 2012-09-17T07:57:27.017 回答
0

为什么不直接打开het parent directoryWar 文件并删除该文件?在上面的代码中展开后,您似乎正试图删除 war 目录。

于 2012-09-17T07:34:42.480 回答
0

指定文件的绝对路径

例子:

C:/Users/Ryan/Downloads/someWarFile.war

我重新创建了问题,此代码删除了 .war 文件。

代码:

        String file = "C:/Users/Ryan/Downloads/someWarFile.war";
        File f = new File(file);

        if( f.exists() )
            System.out.println(file + " exists.");
        else
            System.out.println(file + " not exists.");

        if( f.delete() ) 
            System.out.println(file + " has been deleted");
        else
            System.out.println(file + " could not be deleted");

希望这可以帮助!

于 2012-09-17T07:42:42.877 回答