private static void accessDir(File srcDir)
throws IOException {
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory())
accessDir(files[i]);
else {
//do something
}
}
}
throws IOException {
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory())
accessDir(files[i]);
else {
//do something
}
}
}
if(file==null){
return;
}
java.io.File[] files = file.listFiles();
for(int i=0; i<files.length; i++){
if(files[i].isDirectory()){
System.out.println("-\t-\t-[Dir]"+files[i].getName());
listFiles(files[i]);
}else{
System.out.println("**[File]"+file.getName());
}
}
}
列出当前目录下的目录和文件:
java.io.File file = new java.io.File(".");
listFiles(file);
分析这个过程的状态机请见:
http://www.yi-dao.com/works/model/sample/findFiles.ydm
下载这个文档,使用“易道模型”打开,易道模型下载:
http://www.sharebank.com.cn/soft/soft_view.php?id=11135
-------------------------------------------------------public class Test{
public static void main(String[] args) {
File[] roots = File.listRoots();
String nameToFind = "java.exe";
for (int i = 0; i < roots.length; i++) {
File[] files = findFiles(roots[i], nameToFind);
for (int j = 0; j < files.length; j++) {
System.out.println(files[j].getAbsolutePath());
}
}
}
public static File[] findFiles(File dir, String nameToFind) {
Stack curPath = new Stack();
curPath.push(dir);
return findFiles(curPath, nameToFind);
} public static final int FIND_SUB = 0; // 找子节点
public static final int FIND_SIB = 1; // 找同级节点
public static final int FIND_END = 3; // 结束
public static File[] findFiles(Stack curPath, String nameToFind) {
/** 只检测目录 */
class MyDirFilter
implements FileFilter {
public boolean accept(File pathname) {
return (pathname != null) && pathname.isDirectory();
}
} /** 只检测文件名相同 */
class MyFileFilter
implements FileFilter {
String toFind;
MyFileFilter(String toFind) {
this.toFind = toFind;
} public boolean accept(File pathname) {
return (pathname != null) && pathname.isFile()
&& toFind.equalsIgnoreCase(pathname.getName());
}
} MyFileFilter fileFilter = new MyFileFilter(nameToFind);
MyDirFilter dirFilter = new MyDirFilter();
int state = FIND_SUB; // 开始
LinkedHashSet found = new LinkedHashSet();
while (state != FIND_END) {
File dir = (File) curPath.pop(); // 当前目录
// System.out.println(dir.getAbsolutePath());
if (state == FIND_SUB) { // 查找子节点
File[] subDirs = dir.listFiles(dirFilter);
if (subDirs == null || subDirs.length == 0) { // 没有子节点
curPath.push(dir);
state = FIND_SIB; // 下一次需要找同级节点
}
else {
curPath.push(dir);
curPath.push(subDirs[0]);
state = FIND_SUB;
}
}
else if (state == FIND_SIB) { // 查找同级节点
File[] files = dir.listFiles(fileFilter);
if (files != null) {
for (int i = 0; i < files.length; i++) {
found.add(files[i]);
}
} if (curPath.isEmpty()) {
state = FIND_END; // 已经没有可以找的了,需要退出查找过程
}
else {
File parentDir = (File) curPath.peek();
File[] sibDirs = parentDir.listFiles(dirFilter);
for (int i = 0; i < sibDirs.length; i++) {
if (dir.equals(sibDirs[i])) { // 找到了当前的位置
if (i + 1 < sibDirs.length) { // 存在下一个同级节点
curPath.push(sibDirs[i + 1]);
state = FIND_SUB; // 需要查找子节点
}
else { // 这就是最后一个同级节点
state = FIND_SIB;
}
break;
}
}
}
}
}
return (File[]) found.toArray(new File[found.size()]);
}
}
int n=0;
for (int i=0;i<s.length();i++)
{
if (s.charAt(i) >= 0x4e00 && s.charAt(i) <= 0x9fa5)
n++;
}
System.out.print(n);