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);
}
}