java.io.File类可以用来表示文件或目录,在需要遍历指定路径下的所有文件夹及文件时,可以使用此类。
思路如下:
1、判断给定路径是目录还是文件。
2、如果是文件,则直接打印该文件路径及文件名
3、如果是目录,则先打印该目录路径,并获取该目录下的所有目录及文件,再对每一个文件或目录执行第一步操作。
如此循环,即可获取所有文件
实现:
创建一个FileUtils工具类,并创建getFiles方法:
package utils;
import java.io.File;
public class FileUtils {
public static void getFiles(File dir) {
//如果当前文件或目录存在
if(dir.exists()){
//如果是目录,则:
if(dir.isDirectory()){
//打印当前目录的路径
System.out.println(dir);
//获取该目录下的所有文件和目录组成的File数组
File[] files = dir.listFiles();
//递归遍历每一个子文件
for(File file : files){
getFiles(file);
}
}
//如果是文件,则打印该文件路径及名称
else{
System.out.println(dir);
}
}
}
}
测试:
创建测试类及方法:
package test;
import static org.junit.Assert.*;
import java.io.File;
import org.junit.Test;
import utils.FileUtils;
public class FileUtilsTest {
@Test
public void testGetFiles1() {
File file = new File("/home/xiamingchen/图片");
FileUtils.getFiles(file);
}
}
输出结果如下:
/home/xiamingchen/图片
/home/xiamingchen/图片/Wallpapers
/home/xiamingchen/图片/Wallpapers/3d28fa7220b5cf3c9a4576d4101c6f04.jpg
/home/xiamingchen/图片/Wallpapers/15052410471317.png
/home/xiamingchen/图片/3d28fa7220b5cf3c9a4576d4101c6f04.jpg
/home/xiamingchen/图片/15052410471317.png
所指定路径下的文件如图所示: