黑马程序员技术交流社区

标题: 不知怎么删除整个文件夹,求解答。。。。 [打印本页]

作者: 木子小四    时间: 2016-4-10 00:43
标题: 不知怎么删除整个文件夹,求解答。。。。
本帖最后由 木子小四 于 2016-4-10 00:44 编辑

需求如下:从键盘接收一个文件夹路径,删除该文件夹
--------------------------------------------------------------------------------------------------------------
我整的代码:只能删里面的文件,却剩下空文件夹。。。
  1. public static void main(String[] args) {
  2.                 File f = getfile();
  3.                 shan(f);
  4.         }
  5.         //获取正确的文件夹路径
  6.         public static File getfile(){
  7.                 System.out.println("输入一个文件夹路径");
  8.                 while(true){
  9.                         Scanner sc = new Scanner(System.in);
  10.                         String s = sc.nextLine();
  11.                         File f = new File(s);
  12.                         if(!f.exists()){
  13.                                 System.out.println("输入错误,输入的不是文件夹路径");
  14.                         }else if(f.isFile()){
  15.                                 System.out.println("输入错误,输入的是文件路径");
  16.                         }else if(f.isDirectory()){
  17.                                 return f;
  18.                         }
  19.                 }
  20.         }
  21.         
  22.         //对指定的路径,进行删除操作
  23.         public static void shan(File f ){
  24.                 File[] arr = f.listFiles();
  25.                 //遍历数组
  26.                 for (File f1 : arr) {
  27.                         if(f1.isFile()){
  28.                                 System.out.println(f1.getName());
  29.                                 f1.delete();
  30.                         }else if(f1.isDirectory()){
  31.                                 shan(f1);
  32.                         }
  33.                 }
  34.         }
  35.         
  36. }
复制代码

作者: Hopkin_hu    时间: 2016-4-10 14:02
你这个程序写的就是删除文件,将shan()方法中,f1.isFile()和f1.isDirectory()交换就可以了.
作者: 65708535    时间: 2016-4-10 14:51
全是大神啊,还需要加油
作者: 木子小四    时间: 2016-4-10 17:05
Hopkin_hu 发表于 2016-4-10 14:02
你这个程序写的就是删除文件,将shan()方法中,f1.isFile()和f1.isDirectory()交换就可以了. ...

ok  我这样搞了一下:
  1. else if(f1.isDirectory()){

  2. 32.                                shan(f1);

  3. 33.                                f1.delete();

  4. 34.                                f.deleteOnExit();

  5. 35.                        }
复制代码



就妥了
作者: H_shaohui    时间: 2016-4-10 17:09
额~~不赞成沙发的观点。
如果想要删除文件后把空文件夹也删掉。你的程序主要在for循环结束后,再加上一句f.delete();就可以了
这样就会达到你想要的效果




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2