读书人

资料读写实用类

发布时间: 2012-09-14 23:00:49 作者: rapoo

文件读写实用类

package com.scnulh.util;

?

import java.util.List;

import java.io.File;

import java.io.FilenameFilter;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.regex.Pattern;

?

public class Directory {

???

??? public static class TreeInfo implements Iterable<File>{

?????? public List<File> files=new ArrayList<File>();

?????? public List<File> dirs=new ArrayList<File>();

??????

?????? @Override

?????? public Iterator<File> iterator() {???????

?????????? return files.iterator();

?????? }

??????

?????? void addAll(TreeInfo other)

?????? {

?????????? files.addAll(other.files);

?????????? dirs.addAll(other.dirs);???????

?????? }

??????

?????? public String toString()

?????? {

?????????? return "dirs:"+PPrint.pformat(dirs)+

????????????????? "\nfiles:"+PPrint.pformat(files);

?????? }??

??? }

???

??? /**

??? ?* 递归生成目录及文件树

??? ?* @param startDir

??? ?* @param regex

??? ?* @return

??? ?*/

??? static TreeInfo recurseDirs(File startDir,String regex)

??? {

?????? TreeInfo result=new TreeInfo();

?????? for(File item:startDir.listFiles())

?????? {

?????????? if(item.isDirectory())

?????????? {

????????????? result.dirs.add(item);

????????????? result.addAll(recurseDirs(item, regex));

?????????? }

?????????? else if(item.getName().matches(regex))

????????????? result.files.add(item);

?????? }

?????? return result;

??? }

???

??? public static TreeInfo walk(String start,String regex)

??? {

?????? return recurseDirs(new File(start), regex);

??? }

??? public static TreeInfo walk(File start,String regex)

??? {

?????? return recurseDirs(start, regex);

??? }

???

??? public static TreeInfo walk(File start)

??? {

?????? return recurseDirs(start, ".*");

??? }

??? public static TreeInfo walk (String start)

??? {

?????? return recurseDirs(new File(start), ".*");

??? }

???

??? public static File[] local(File dir,final String regex)

??? {

?????? return dir.listFiles(new FilenameFilter() {

?????????? private Pattern pattern=Pattern.compile(regex);

?????????? @Override

?????????? public boolean accept(File dir, String name) {

????????????? // TODO Auto-generated method stub

????????????? return pattern.matcher(new File(name).getName()).matches();

?????????? }

?????? });

??? }

???

??? public static File[] local(String path,final String regex)

??? {

?????? return local(new File(path),regex);

??? }

???

??? public static void main(String[] args)

??? {

?????? PPrint.pprint(Directory.walk(".").files);

??????

?????? for(File file:Directory.walk(".", ".*.*\\.class$"))

?????? {

?????????? System.out.println(file);

?????? }

??????

??? }

???

}

?

读书人网 >编程

热点推荐