今天的一个需求是查找给定磁盘路径下的所有SQL文件,导入Sybase IQ
。已经有一段时间没有写过类似代码,就此练手纪录一下。
需求: 寻找给定文件夹中所有的PDF
文件
-
不使用
FileFilter
public class PDFFinder { public static void main(String[] args){ File directory = new File("c:\temp"); List<File> pdfFiles = getAllPDFFiles(directory); } private static List<File> getAllPDFFiles(File directory){ List<File> files = new ArrayList<File>(); if(!directory.isDirectory()){ return Collections.emptyList(); } File[] listFiles = directory.listFiles(); for(File file : listFiles){ if(file.isFile() && file.getName().endsWith("pdf")){ files.add(file); } else { files.addAll(getAllPDFFiles(file)); } } return files; } }
-
使用
FileFilter
public class PDFFinder { public static void main(String[] args){ File directory = new File("c:\temp"); List<File> pdfFiles = getAllPDFFiles(directory); } private static List<File> getAllPDFFiles(File directory){ List<File> files = new ArrayList<File>(); if(!directory.isDirectory()){ return Collections.emptyList(); } File[] listFiles = directory.listFiles(new FileFilter(){ @Override public boolean accept(File pathname){ if(pathname.isFile() && pathname.getName().endsWith("pdf")){ return true; } else { //include folders return true; } } }); File file = null; for(int i = 0; i < listFiles.length; i++){ file = listFiles[i]; if(file.isFile()){ files.add(file); } else { files.addAll(getAllPDFFiles(file)); } } return files; } }
-
文件排序
需求:文件夹在前,文件在后,并按照A-Z排列Collections.sort(pdfFiles, new Comparator<File>(){ @Override public int compare(File obj1, File obj2){ if(obj1.isDirectory() && obj2.isFile()){ return 1; } else if(obj1.isFile() && obj2.isDirectory()){ return -1; } else{ return obj1.getName().compareTo(obj2.getName()); } } })
网友评论