首页 > 代码库 > java文件遍历

java文件遍历

用java实现本地文件的遍历,顺便了解了下集合框架,注意java中还有Collections,是一个强大的工具,注意其与Collection的区别,在

for(File f: listFiles)  中,如果不做 if(listFiles != null) 判断,在遍历到listFiles为空时,会报NullPointerException的异常,熟悉下常见的NullPointerException异常。

 

 

 1 /* 2  *遍历某磁盘下的所有文件  3  */ 4 package familiarjava; 5 import java.io.*; 6 import java.util.*; 7  8 public class TraversFile { 9     10 //------------------------------方法一----------------------------------------11     static Collection<File> listFiles(File root){12         List<File> files = new ArrayList<File>();13         listFiles(files, root);14         return files;15     }16     17     static void listFiles(List<File> files, File root) {18         // TODO Auto-generated method stub19         File[] listFiles = root.listFiles();20         if(listFiles != null){        //若不做判断,会报空指针NullPointerException异常21             for(File f: listFiles){22                 if(f.isFile())23                     files.add(f);24                 else if(f.isDirectory())25                     listFiles(files, f);26             }27         }28         29     }30 31     void printCollection(Collection<File> files){32         if(files.isEmpty())33             return;34         Iterator<File> it = files.iterator();35         while(it.hasNext())36             System.out.println(it.next());37     }38     39 //-------------------------------方法二---------------------------------------40     public void traversefile(String dir, String filetype){41         File f = new File(dir);42         File[] fs = f.listFiles();43         44         if(fs != null){45             for(int i=0; i<fs.length; i++){46                 File file = fs[i];47                 if(file.isFile()){48                     String pathTemp = file.getAbsolutePath();49                     if((pathTemp.indexOf(filetype))!=-1)50                         System.out.println(file.getAbsolutePath());51                 }else{52                     traversefile(file.getAbsolutePath(),filetype);53                     //System.out.println(file.getAbsolutePath());54                 }55             }56         }57     }58     59     public static void main(String[] args){60         TraversFile tf = new TraversFile();61         //tf.traversefile("f:/");62         63         64         /*65         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));66         System.out.println("请输入盘符: ");67         String dirSym = null;68         try{69             dirSym = br.readLine().toString();70         }catch(IOException e){71             System.out.println(e);72         }73         dirSym = dirSym + ":/";74         75         System.out.println("请输入需要显示的文件类型的后缀名: ");76         String fileType = null;77         try{78             fileType = br.readLine();79         }catch(IOException e){80             System.out.println(e);81         }82         fileType = "." + fileType;83         tf.traversefile(dirSym, fileType);84         */85         86         File temp = new File("D:\\iso");87         Collection<File> files = listFiles(temp);88         tf.printCollection(files);89     }90 }

 

java文件遍历