A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 木子小四 于 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. }
复制代码

4 个回复

倒序浏览
你这个程序写的就是删除文件,将shan()方法中,f1.isFile()和f1.isDirectory()交换就可以了.
回复 使用道具 举报
全是大神啊,还需要加油
回复 使用道具 举报
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.                        }
复制代码



就妥了
回复 使用道具 举报
额~~不赞成沙发的观点。
如果想要删除文件后把空文件夹也删掉。你的程序主要在for循环结束后,再加上一句f.delete();就可以了
这样就会达到你想要的效果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马