java递归获取文件列表和File的应用

来源:互联网 发布:消费宝集团 知乎 编辑:程序博客网 时间:2024/04/27 13:34
/**
在函数内部,调用自身方法的形式称之为递归。
递归注意的事项:
1、递归的约束条件
2、递归的调用次数,防止内存溢出
*/
import  java.io.*;public class DiguiDemo{public static void main(String args[]){//File f = new File("F:/JavaOracle/OOP");//System.out.println("-----");//getlistFiles(f,0);//toBin(6);//System.out.println("求和:"+getSum(10));File f = new File("F:/JavaOracle/ABCD");//File []files = f.listFiles();//System.out.println("00000--"+files.length);DeleteFiles(f);}/**删除指定文件夹中的所用文件。从里到外一次删除所有文件思路:1、首先遍历这个文件夹,如果是文件的话就删除,若不是则继续递归遍历*/public static void DeleteFiles(File dir){File []files = dir.listFiles();System.out.println(files.length+"---");for(File f :files){if(f.isDirectory()){DeleteFiles(f);}else{System.out.println(f.getName()+"--file--"+f.delete());}}System.out.println(dir+"**dir**"+dir.delete());  }//设置一个层级目录,表示第几层public static String getLevel(int level){StringBuffer sb = new StringBuffer();sb.append("|--");for(int i=0;i<level;i++){sb.insert(0," ");}return sb.toString();}//运用递归的方法,返回指定目录中所有的文件、及文件夹public static void getlistFiles(File dir,int level){System.out.println(dir);level++;    //第n次调用,说明是第level+n层File files[] = dir.listFiles();for(int i=0;i<files.length;i++){if(files[i].isDirectory()){getlistFiles(files[i],level);}else{System.out.println(getLevel(level)+files[i]);}}}//运用递归的方法,进行十进制转换成二进制public static void toBin(int a){if(a>0)toBin(a/2);System.out.print(a%2);} //运用递归方法,进行求和public static int getSum(int a){if(a==1)return 1;return a+getSum(a-1);}}

FileList.java

/**实例:获取指定的文件夹中所有.java文件的绝对路径,并存储到txt文件中。步骤:1、递归调用指定文件夹中的文件,获取满足要求的文件的绝对路径2、将获取的绝对路径存储到list集合中。作为缓存。3、将list集合中的路径,存储到指定的文件中。*/import java.util.*;import java.io.*;public class FileList{public static void main(String args[]){File f = new File("F:\\JavaOracle");List<File> list = new ArrayList<File>();fileToList(f,list);System.out.println(list.size());writeToFile("F:\\fileList.txt",list);}//将指定文件夹中满足要求的文件存储到list集合中public static void fileToList(File f,List<File> list){File []files = f.listFiles();for(File file : files){//若是文件夹,则递归调用该方法。若不是则判断是.java文件。并存储到list集合中if(file.isDirectory())fileToList(file,list);else{if(file.getName().endsWith(".java")){//getAbsoluteFile()获得绝对路径,返回File类型list.add(file.getAbsoluteFile());}}}}//将list中的清单写入到指定的文件中去public  static void writeToFile(String path,List<File> list){//这里只需要调用写入操作就行了。用BufferedWriter进行缓存BufferedWriter bufw = null;try{bufw = new BufferedWriter(new FileWriter(path));for(File absoluteFile : list){bufw.write(absoluteFile.toString());bufw.newLine();bufw.flush();}}catch(IOException e){//e.printStratack();System.out.println("文件写入异常");}finally{try{if(bufw!=null)bufw.close();}catch(IOException e){System.out.println("未关闭异常");}}}}



0 0
原创粉丝点击