读书人

java兑现打印某个目录的全部子文件名称

发布时间: 2013-01-23 10:44:50 作者: rapoo

java实现打印某个目录的全部子文件名称

import java.io.*;   //实现打印某个目录的全部子文件名称(包括子目录)import java.util.Scanner;public class Test { //命令行参数需要提供一个目录参数    public static void main(String[] args) throws Exception {         if (args.length!=1) {            System.out.println("Usage: java FileExample directory");            System.exit(0);        }        new Test().printFile(new File(args[0]));                Scanner in = new Scanner(System.in);        String dir = "", filename = "";        System.out.println("输入目录名:");        dir = in.next();        System.out.println("输入文件名:");        filename = in.next();                Test t = new Test();        File f = new File(dir);        int i = 0;        if( (i = t.find(f, filename)) == 0 ){            System.out.println("该目录下没有此文件。");        }else{            System.out.println("共找到" + i + "个文件。");        }        System.out.println(dir + " 目录下,文件总大小:" + t.totalSize(dir));    }    public void printFile(File f) throws Exception {        if (!f.isDirectory()) {            System.out.println("FileExample only accept directory parameter.");            System.exit(0);        }          System.out.println(f.getCanonicalPath());  //输出规范的相对对路径        File[] children = f.listFiles();    //得到目录的子文件(包括子目录)        for(int i=0;i<children.length;i++) {         if (children[i].isDirectory()) {   //如果是子目录,则递归                this.printFile(children[i]);             }         else {          System.out.println(children[i].getCanonicalPath());         }        }    } //搜索遍历某个目录,判断是否包含某文件    /**     *      * @param f      * @param filename     * @return     * @throws Exception     */    public int find(File f, String filename) throws Exception{        int sum = 0;  if( !f.isDirectory() ){     //给的不是目录文件                        if(f.getName() == null ? filename==null : f.getName().equals(filename)){//如果同名                            System.out.println( f.getCanonicalPath() );                            sum++;                            return sum;                        }   System.out.println( f.getName() + " is not a Directory." );   return sum;  }  File[] children = f.listFiles();  //得到目录下所有文件  for(int i=0; i<children.length; i++){ //遍历子目录   if( !children[i].isDirectory() ){ //如果不是目录文件    if(children[i].getName() == null ? filename == null : children[i].getName().equals(filename)){                                    System.out.println(children[i].getCanonicalPath());//同名输出目录的相对路径                                    sum++;                                }   }   else{   //如果是目录,递归                            sum += this.find(children[i], filename);   }  }                return sum; }  //返回该目录的所有的文件大小之和 public long totalSize(String dir) {            long size = 0;            File f = new File(dir);            if( !f.isDirectory() ){//如果不是一个目录                size += f.getUsableSpace();            }            else{//如果是一个目录                File[] children = f.listFiles(); //得到目录下所有文件                for(int i=0; i<children.length; i++){                    if( !children[i].isDirectory() ){//如果不是一个目录文件                        size += children[i].getUsableSpace();                    }                    else{//如果是一个目录,递归                        totalSize( children[i].getName() );                    }                }            } return size; }}


读书人网 >其他相关

热点推荐