java 循环读取文件夹里面的文件

在我的D盘下,有一个文件夹aa,在里面有10张图片,如何循环将这10张图片的路径读取出来,例如"D:/aa/1.png","D:/aa/2.png","D:/aa/3.png" ... ...。请各位大侠帮帮忙,谢谢!

JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
1.不使用递归的方法调用。
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
fileNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
folderNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);

}
2.使用递归的方法调用
public static List<File> getFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
if (files != null) {
for (int i = 0; i < files.length; i++) {
String fileName = files[i].getName();
if (files[i].isDirectory()) { // 判断是文件还是文件夹
getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
} else if (fileName.endsWith("avi")) { // 判断文件名是否以.avi结尾
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
filelist.add(files[i]);
} else {
continue;
}
}

}
return filelist;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-22
public ArrayList<String> list = new ArrayList<String>(0);//用arraylist保存扫描到的路径
public void Scan(String path) {
File file = new File(path);
File[] files = file.listFiles();
String[] filenames = file.list();
if (filenames == null)
return;
for (int i = 0; i < filenames.length; i++) {
if (files[i].isFile()) {
if (files[i].getName().endsWith(“png”))
list.add(files[i].getPath());
} else if (files[i].isDirectory()) {
Scan(files[i].getPath());
}
}
}
第2个回答  推荐于2016-08-17
public void fileList(String filePath){
File srcFile = new File("d:/aa");
boolean bFile = srcFile.exists();
if (!bFile || !srcFile.isDirectory() || !srcFile.canRead()) {
try {
srcFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}else{
File[] file = srcFile.listFiles();
for(int i=0;i<file.length;i++){
System.out.println(file[i].getAbsolutePath());
}

}
}追问

我测试过了,可以打印出来,不过你的这句 File srcFile = new File("d:/aa");应该改为
File srcFile = new File(filePath);这样吧。不过我打印出来的,为什么是倒序的呢?
它是这样显示的"D:/aa/10.png","D:/aa/9.png","D:/aa/8.png" ...

追答

恩,那个方法名是我后来加上去得,参数忘改了,至于那个排序我就不知道怎么回事了,可能是内部机制吧

追问

那我用另外一个数组来接收,可不可以让其接收到的是,从第一张图片开始的呢?
"D:/aa/1.png","D:/aa/2.png","D:/aa/3.png" ... ...

追答

按理来说是可以的,你试一下不就知道

本回答被提问者采纳
相似回答