黑马程序员-递归

来源:互联网 发布:专门看电影的软件 编辑:程序博客网 时间:2024/06/06 17:33

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 

/*列出指定目录下文件或文件夹,包含子目录中的内容也就是列出指定目录下所有内容 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可在列出过程中出现的还是目录的话,可以再次调用本功能。也就是函数自身调用自身这种表现形式,或者编程手法,称为递归 递归要注意:1.限定条件2.要注意递归的次数,尽量避免内存溢出*/import java.io.*;class FileDemo3{       public static voidmain(String[] args)       {              //showDir(newFile("D:\\java0217"));              toBin(6);       }       public static void toBin(int num)       {              /*              while(num>0)              {                     System.out.println(num%2);                     num/=2;              }*/              if(num>0)              {                     toBin(num/2);                     System.out.print(num%2);              }       }        public static boolean showDir(File dir)       {              if(!dir.exists())                     returnfalse;              System.out.println(dir);              File[]names=dir.listFiles();              for(Filename:names)              {                     if(name.isDirectory())                            showDir(name);                     else                            System.out.println(name+"..."+name.length());              }              return true;       }}


 

带层级目录

import java.io.*;class FileDemo3{       public static voidmain(String[] args)       {              showDir(newFile("D:\\java0217"),0);       }       public static StringgetLevel(int level)       {              StringBuildersb=new StringBuilder();              for(intx=0;x<level;x++)              {                     sb.append("  ");              }              returnsb.toString();       }       public static booleanshowDir(File dir,int level)       {              if(!dir.exists())                     returnfalse;              System.out.println(getLevel(level)+dir);              level++;              File[]names=dir.listFiles();              for(Filename:names)              {                     if(name.isDirectory())                            showDir(name,level);                     else                            System.out.println(getLevel(level)+name+"..."+name.length());              }              return true;       }}


 

 

 

/*删除一个带内容的目录删除原理在windows中,删除目录从里面住外删除的 既然是从里住外删除,就需要用到递归*/import java.io.*;class RemoveDir {       public static voidmain(String[] args)       {              removeDir(newFile("D:\\1"));       }       public static boolean removeDir(File dir)       {              if(!dir.exists())                     returnfalse;              File[]files=dir.listFiles();              for(Filefile:files)              {                     if(file.isDirectory())                            removeDir(file);                     else                            System.out.println(file+"...file..."+file.delete());              }              System.out.println(dir+"...dir..."+dir.delete());              return true;       }}


 

**************************************************************************************

 

/*练习将一个指定目录下的java文件的绝对路径,存储到一个文本文件中建立一个java文件列表清单文件 思路:1.对指定目录进行递归2.在递归过程中获取java文件绝对路径3.将这些路径存储到集合中4.将集合中的数据写入到一个文件中*/import java.io.*;import java.util.*;class JavaFileList {       public static void main(String[] args)       {              File dir=newFile("D:\\java0217");              List<File>list=new ArrayList<File>();              fileToList(dir,list);              System.out.println(list.size());              File file=newFile(dir,"javalist.txt");              listToFile(list,file.toString());       }       public static void fileToList(File dir,List<File> list)       {              if(!dir.exists())                     throw newRuntimeException("目录为空");              File[]files=dir.listFiles();              for(Filefile:files)              {                     if(file.isDirectory())                            fileToList(file,list);                     else                     {                            if(file.getName().endsWith(".java"))                                   list.add(file);                     }              }       }       public static void listToFile(List<File> list,String javaListFile)       {              BufferedWriterbufw=null;              try              {                     bufw=newBufferedWriter(new FileWriter(javaListFile));                     for(Filefile:list)                     {                            bufw.write(file.getAbsolutePath());                            bufw.newLine();                            bufw.flush();                     }              }              catch(IOException e)              {                     throw newRuntimeException("写入失败");              }              finally              {                     try                     {                            if(bufw!=null)                                   bufw.close();                     }                     catch(IOException e)                     {                            thrownew RuntimeException("写入关闭失败");                     }              }       }}


 

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 

0 0
原创粉丝点击