日期:2014-05-20 浏览次数:20902 次
import java.io.*;
import java.util.*;
public class FileDemo06 {
//查找符合条件的文件,并返回一个文件名列表
public static List<File> findFiles(String baseDirName, String targetFileName, int count) {
LinkedList<File> fileList = new LinkedList<File>(); //创建一个列表,里面装目录或子目录
LinkedList<File> fileList2 = new LinkedList<File>(); //创建一个列表,里面装搜到的文件
File baseDir = new File(baseDirName);
if(!baseDir.exists() || !baseDir.isDirectory()) {
System.out.println("文件查找失败," + baseDirName + " 不是一个目录!");
return fileList2;
}
String tempName = null;
fileList.addLast(baseDir);
File tempFile = null;
while(!fileList.isEmpty()) {
tempFile = fileList.removeFirst(); //将列表中的第一个元素取出并删除
if(tempFile.exists() && tempFile.isDirectory()) {
File[] files = tempFile.listFiles();
for(int i = 0; i < files.length; i ++) {
//如果是目录则放进队列
if(files[i].isDirectory())
fileList.add(files[i]);
else {
//如果是文件则根据文件名与目标文件名进行匹配
tempName = files[i].getName();
if(matchWord(targetFileName, tempName)) {
//匹配成功,将文件名添加到结果集
fileList2.add(files[i].getAbsoluteFile());
//如果已经达到指定的数目,则退出循环
if(count != 0 && fileList2.size() > count) {
return fileList;
}
}
}
}
}
}
return fileList2;
}
//文件名的通配符匹配,如果匹配成功则返回 true,否则返回 false
public static boolean matchWord(String pattern, String str) {
int patternLength = pattern.length();
int strLength = str.length();
int strIndex = 0;
char ch;
for(int patternIndex = 0; patternIndex < patternLength; patternIndex ++) {
ch = pattern.charAt(patternIndex);
if(ch == '*') { //通配符 * 表示可以匹配任意多个字符
while(strIndex < strLength) {
if(matchWord(pattern.substring(patternIndex + 1), str.substring(strIndex))) {
return true;
}
strIndex ++;
}
}
HTTP/1.1 200 OK
Server: nginx/0.7.68
Date: Fri, 02 Nov 2012 02:14:23 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: ASP.NET
Last-modified: 2012-10-23 17:58:48
Content-Length: 159016
Cache-control: private
50分相送,急问Hbiernate中“insert into select”的写法? - Java / Java SE