import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class BianLiDir { static void ListFilesInDirByType(String findDir, String fileType, String saveDir, String[] exceptDirNames) { String saveFileName = fileType + ".txt"; File file = new File (findDir); File[] files = file.listFiles (); for (int a = 0; a < files.length; a++) { File fl = files[a]; String fileName = fl.getName (); if (fl.isDirectory ()) { for (String exceptDirName : exceptDirNames) { if (fileName.equals (exceptDirName)) { continue; } } ListFilesInDirByType (fl.toString (), fileType, saveDir, exceptDirNames); } else { if (!(fileName.endsWith ("." + fileType))) { continue; } addContentToFile (saveDir, saveFileName, findDir + "|"); long B = fl.length (); long size = 0; String danWei = ""; if (B < 1024) { size = B; danWei = "B"; } else if (B >= 1024 && B < 1024 * 1024) { size = B / 1024; danWei = "KB"; } else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) { size = B / 1024 / 1024; danWei = "MB"; } else if (B >= 1024 * 1024 * 1024 && B < 1024 * 1024 * 1024 * 1024) { size = B / 1024 / 1024 / 1024; danWei = "GB"; } addContentToFile (saveDir, saveFileName, fileName + "|" + size + danWei + "\n"); } } } static void ListFilesInDirByName(String findDir, String saveDir, String searchContent, String[] exceptDirNames) { String saveFileName = searchContent + ".txt"; File file = new File (findDir); File[] files = file.listFiles (); for (int a = 0; a < files.length; a++) { File fl = files[a]; String fileName = fl.getName (); if (fl.isDirectory ()) { for (String exceptDirName : exceptDirNames) { if (fileName.equals (exceptDirName)) { continue; } } ListFilesInDirByName (fl.toString (), saveDir, searchContent, exceptDirNames); } else { if (!(fileName.contains (searchContent))) { continue; } addContentToFile (saveDir, saveFileName, findDir + "|"); long B = fl.length (); long size = 0; String danWei = ""; if (B < 1024) { size = B; danWei = "B"; } else if (B >= 1024 && B < 1024 * 1024) { size = B / 1024; danWei = "KB"; } else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) { size = B / 1024 / 1024; danWei = "MB"; } else if (B >= 1024 * 1024 * 1024 && B < 1024 * 1024 * 1024 * 1024) { size = B / 1024 / 1024 / 1024; danWei = "GB"; } addContentToFile (saveDir, saveFileName, fileName + "|" + size + danWei + "\n"); } } } static void ListFilesInDirByNameInSomeType(String findDir, String saveDir, String searchContent, String[] fileTypes, String[] exceptDirNames) { String saveFileName = searchContent + ".txt"; File file = new File (findDir); File[] files = file.listFiles (); for (int a = 0; a < files.length; a++) { File fl = files[a]; String fileName = fl.getName (); if (fl.isDirectory ()) { for (String exceptDirName : exceptDirNames) { if (fileName.equals (exceptDirName)) { continue; } } ListFilesInDirByNameInSomeType (fl.toString (), saveDir, searchContent, fileTypes, exceptDirNames); } else { boolean type = false; for (String fileType : fileTypes) { if (fileName.endsWith ("." + fileType)) { type = true; break; } } if (type == false) { continue; } if (!(fileName.contains (searchContent))) { continue; } addContentToFile (saveDir, saveFileName, findDir + "|"); long B = fl.length (); long size = 0; String danWei = ""; if (B < 1024) { size = B; danWei = "B"; } else if (B >= 1024 && B < 1024 * 1024) { size = B / 1024; danWei = "KB"; } else if (B >= 1024 * 1024 && B < 1024 * 1024 * 1024) { size = B / 1024 / 1024; danWei = "MB"; } else if (B >= 1024 * 1024 * 1024 && B < 1024 * 1024 * 1024 * 1024) { size = B / 1024 / 1024 / 1024; danWei = "GB"; } addContentToFile (saveDir, saveFileName, fileName + "|" + size + danWei + "\n"); } } } static void addContentToFile(String saveDir, String fileName, String content) { FileWriter fw = null; BufferedWriter bw = null; try { File file = new File (saveDir + fileName); if (!file.exists ()) { file.createNewFile (); } fw = new FileWriter (file, true); bw = new BufferedWriter (fw); bw.write (content); } catch (Exception e) { e.printStackTrace (); } finally { try { bw.close (); } catch (IOException e) { e.printStackTrace (); } } } public static void main(String[] args) { // String findDir = "D:\\cvs"; // String saveDir = "D:\\data\\"; // String[] fileTypes = {"vsd"}; // String[] exceptDirNames = {"CVS",".svn"}; // for (String fileType : fileTypes) { // ListFilesInDirByType (findDir, fileType, saveDir,exceptDirNames); // } // String findDir = "F:\\svn"; // String saveDir = "D:\\data\\"; // String searchContent = "idm"; // String[] exceptDirNames = {"CVS",".svn"}; // ListFilesInDirByName (findDir, saveDir, // searchContent,exceptDirNames); String findDir = "F:\\svn"; String saveDir = "D:\\data\\"; String searchContent = "IM"; String[] fileTypes = {"doc", "pdf", "txt", "properties"}; String[] exceptDirNames = {"CVS", ".svn"}; ListFilesInDirByNameInSomeType (findDir, saveDir, searchContent, fileTypes, exceptDirNames); } }