今天有个朋友向我问了个问题,说是想用java代码看一个路径下的文件怎么看,于是随手写了下面一点代码,供不懂或不太了解的小牛牛们学习学习哈。
import java.io.*;
class Test
{
public static void main(String[] args)throws IOException
{
test("D:\\");
}
public static void test(String path){ //path为目录
File file = new File(path);
File[] files = file.listFiles(); //遍历该目录所有文件和文件夹对象
for(int i = 0; i<files.length;i++){
if(files[i].isDirectory()){
test(files[i].toString()); //递归操作,逐一遍历各文件夹内的文件
}else {
if(!files[i].isDirectory())
System.out.println(files[i]); //只打印文件,不打印文件夹
}
}
}
再来补充一下,好几种方法可以查找当前目录的文件。这个没用递归所以只能找当前目录的文件,要找所有文件的自己在下面的方法上用下递归吧,方法其实很多很多,我就列几种吧。
//实现FilenameFilter接口
public static void test3(){
File file = new File("D:\\");
NameFilter filter = new NameFilter();
String[] str = file.list(filter);
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
//匿名内部类
public static void test4(){
File file = new File("D:\\");
String[] str = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
if(name.endsWith(".java")||name.endsWith(".txt"))
return true;
return false;
}
});
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
//FileFilter
public static void test5(){
File file = new File("D:\\");
File[] listFiles = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
if (pathname.isFile()&&pathname.getName().endsWith("java")) {
return true;
}
return false;
}
});
for (int i = 0; i < listFiles.length; i++) {
System.out.println(listFiles[i].getName());
}
}