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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一不小心用这个代码创建了N多的C文件夹,太多了都删不掉了。怎么才能删。一直没找到方法,里面的文件倒是全删了,文件夹不知道怎么去删。

import java.io.*;

public class server
{
public static void main(String args[]) throws IOException
{
  String url1 = "D:\\a";
  String url2 = "D:\\a\\c";
  copyDirectiory(url2 , url1 );
}

public static void copyDirectiory(String s1, String s2) throws IOException
{
  (new File(s1)).mkdirs();
  File[] file = (new File(s2)).listFiles();
  for (int i = 0; i < file.length; i++)
  {
   if (file[i].isFile())
   {
    FileInputStream aj = new FileInputStream(file[i]);
    FileOutputStream ag = new FileOutputStream(s1 + "\\" + file[i].getName());
    byte[] b = new byte[1024 ];
    int len;
    while ((len = aj.read(b)) != -1)
    {
     ag.write(b, 0, len);
    }
    ag.close();
    aj.close();
   }
   if (file[i].isDirectory())
   {
    copyDirectiory(s1 + "\\" + file[i].getName(), s2 + "\\" + file[i].getName());
   }

  }

}
}

5 个回复

倒序浏览
没有相关的方法吗?
回复 使用道具 举报
{:soso_e105:} 真的没有办法吗??
回复 使用道具 举报
先判断文件里面的是否有文件、有就删掉、然后再删文件夹
package thrid.day;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class fileDemo1 {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
File f=new File("G:/java/java基础3");
List<File> list=new ArrayList<File>();
                cf6(f,list);
                  for(File file:list)
                     {
                             sop("::"+file);
                     }
        }
        public static void cf5(File dir) throws IOException//遍历指定文件夹中所有文件
        {
               
               
             File files[]= dir.listFiles();
             sop(dir.length());
             for(int x=0;x<files.length;x++)
             { if(files[x].isDirectory())
                             cf5(files[x]);
             else
                     //System.out.println(files[x]+ files[x].delete());
                          sop(files[x].toString()+"::"+files[x].delete());
       
             }
             sop(dir.getName()+"::"+ dir.delete());
          
        }
        public static void cf6(File dir,List<File> list)
        {
                 File files[]= dir.listFiles();
             sop(dir.length());
             for(File file:files)
             { if(file.isDirectory())
                             cf6(file,list);
             else{
                     
                     
                             if(file.getName().endsWith(".java"));
                             {
                             list.add(file);
                             sop("111111");
                             }
                     
             }
             }
          
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}
你参考下这个例子

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
删除一个带内容的目录,递归思想
删除原理:
在window中,删除目录从里面往外删除的。
  1. import java.io.*;
  2. class  DeleteDir
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 File dir = new File("d:\\testdir");
  8.                 deleteDir(dir);
  9.         }

  10.         public static void deleteDir(File dir)
  11.         {
  12.                 File[] files = dir.listFiles();
  13.                
  14.                 for(int x=0; x<files.length; x++)
  15.                 {
  16.                         if(files[x].isDirectory())
  17.                                 deleteDir(files[x]);
  18.                         else
  19.                                 System.out.println(files[x].toString()+":-file-:"+files[x].delete());
  20.                 }

  21.                 System.out.println(dir+"::dir::"+dir.delete());
  22.         }

  23. }
复制代码
既然是从里往外删除。就需要用到递归。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
哦  谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马