File对象的文件列表功能主要用到的方法是:list(); listFiles(); listRoots();
1.list(); 返回一个字符串数组(String),这些字符串指定此抽象路径名表示的目录中的文件和目录。
2.listFiles(); 返回一个抽象路径名数组(返回 File[] ),这些路径名表示此抽象路径名表示的目录中的文件。
3.listFiles(FilenameFilter filter); 返回抽象路径名数组(返回 File[] ),这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
4.listRoots();列出可用的文件系统根(返回 File[])。
package com.tgx.file;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo2 {
public static void main(String[] args) {
listRootsDemo();
}
/*
* 列出指定目录的所有文件,要是是文件夹,那么就列出文件夹里的文件。
* 使用listFiles();方法
*/
public static void listDemo_3(){
File dir = new File("G:\\Exam6_1");
showFiles(dir);
}
public static void showFiles(File dir){
System.out.println("file's dir:"+dir);
File[] file = dir.listFiles();
for(int i=0; i<file.length; i++){
if(file[i].isDirectory()){
//如果是目录的话,那么就在调用一次该方法,来找出文件。
showFiles(file[i]);
}else{
//说明是文件
System.out.println("文件的名字:"+file[i]);
}
}
}
/*
* 列出指定目录的指定后缀文件,和文件的属性,记住list()方法只能返回文件的名字,不能返回文件的属性。
* 需要用listFiles();这个方法
*/
public static void listDemo_2(){
File dir = new File("c:\\");
File[] names = dir.listFiles(new FilenameFilter(){
//因为FilenameFilter是一个接口,要实现下面的方法
public boolean accept(File dir, String name ){
return name.endsWith(".ini");
}
});
System.out.println("names lenght:"+names.length);
//打印出指定后缀的文件
for(File name : names){
System.out.println("name:"+name);
System.out.println("file's path:"+name.getPath());
System.out.println("file's 是否可以执行:"+name.canExecute());
System.out.println("");
}
}
/*
* 列出指定目录的文件和文件夹,(包含隐藏文件)
*/
public static void listDemo(){
File dir = new File("c:\\");
String[] names = dir.list();//当所指定的目录为文件或空目录时,返回空,出异常
System.err.println("names length:" +names.length);
for(String name: names){
System.out.println(name);
}
}
//列出系统文件系统根
public static void listRootsDemo(){
File[] f =File.listRoots();
for(File file : f){
System.out.println(file);
}
}
}