本帖最后由 rockybull 于 2015-12-17 20:29 编辑
简单利用File类和递归显示指定文件夹中指定扩展名的文件的路径。 递归就是方法自己调用自己。这个程序可以修改成固定的路径(如整个硬盘C、D、E盘),和多个扩展名(用||或连接)。 这个程序用到了File类中的方法,exists()判断路径是否存在。isFile()是否为文件。isDirectory()是否为文件夹。 listFiles()返回指定路径下的所有文件和文件夹的路径存在File[]数组中。 getName()返回路径文件名字符串。 String中的方法: endsWith()是否以指定字符串结尾。
代码:
import java.io.File; //导入File和Scanner类 import java.util.Scanner;
public class T6 { //定义一个类
public static void main(String[] args) { //main方法 File f=getDir(); //调用getDir()方法获取路径。 print(f); 调用print()输出指定扩展名的文件的路径 System.out.println("over"); }
public static void print(File f) { File[] f1 = f.listFiles(); //获取指定文件夹下的文件和文件夹的路径存在File数组。 if(f1==null){ //判断f1数组是否为空,如果为空跳出方法,避免空指针异常。
return; } for (File file : f1) { //增强for遍历数组,如果是以.mp3结尾的文件就输出该文件的路径。 if(file.isFile() && file.getName().endsWith(".mp3")) System.out.println(file); else if(file.isDirectory()) //如果是文件夹,就用递归思想自己调用自己,继续遍历这个文件夹的内容。 print(file); } }
public static File getDir() { //获取用户输入的合法文件夹路径File Scanner sc=new Scanner(System.in); System.out.println("请输入文件夹路径"); while(true) { //判断用户输入的路径是否是文件夹。 String s=sc.nextLine(); File f=new File(s); if(!f.exists()) System.out.println("你输入的不是路径,请重新输入"); else if(f.isFile()) System.out.println("你输入的是文件路径,请重新输入"); else return f;
} }
}
|