java在递归的时候,可以返回一个集合如ArrayList吗?

menggudaoke 2013-11-01 09:55:47
如下是在递归一个文件夹的类,想得到各个文件夹及文件的绝对路径,但只能求的第一个文件夹的名称,其中的文件和其他文件夹根本就没求得,就直接报空指针错误了。求解。

import java.io.*;
import java.util.*;

public class TestIO3{
public static void main(String[] args){

String[] filenames = new File("F:/oracle-plsql资料").list();
ArrayList<File> files = new ArrayList<File>();
for(String s:filenames){
files.add(new File(s));
}
ArrayList<String> absuPaths = getSubFiles(files);
System.out.println(absuPaths.size());
for(String f:absuPaths){
System.out.println(f);
}
}

public static ArrayList getSubFiles(ArrayList<File> files){
ArrayList<String> al = new ArrayList();
for(File f: files){
if(f.isFile()){
al.add(f.getAbsolutePath());
}else{
System.out.println(f.getName());
//getSubFiles(f.listFiles());
ArrayList<File> temp = new ArrayList<>();
for(File ff:f.listFiles()){
temp.add(ff);
}
getSubFiles(temp);
}
}
return al;
}
}
...全文
640 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
menggudaoke 2013-11-02
  • 打赏
  • 举报
回复
引用 2 楼 udbwcso 的回复:

private static ArrayList<String> filePathList = new ArrayList<String>();

	public static void main(String[] args) {
		String path = new File("").getAbsolutePath();
		getAllFilePath(path);
		for(int i = 0; i < filePathList.size(); ++i){
			System.out.println(filePathList.get(i));
		}
	}
	
	public static void getAllFilePath(String path){
		File[] files = new File(path).listFiles();
		for(int i = 0; i < files.length; ++i){
			filePathList.add(files[i].getAbsolutePath());
			if(files[i].isDirectory()){
				getAllFilePath(files[i].getAbsolutePath());
			}
		}
	}
谢谢,这样可以了,但是为什么如果这样会报空指针错误呢? String path = new File(".").getAbsolutePath();
尘缘udbwcso 2013-11-01
  • 打赏
  • 举报
回复

private static ArrayList<String> filePathList = new ArrayList<String>();

	public static void main(String[] args) {
		String path = new File("").getAbsolutePath();
		getAllFilePath(path);
		for(int i = 0; i < filePathList.size(); ++i){
			System.out.println(filePathList.get(i));
		}
	}
	
	public static void getAllFilePath(String path){
		File[] files = new File(path).listFiles();
		for(int i = 0; i < files.length; ++i){
			filePathList.add(files[i].getAbsolutePath());
			if(files[i].isDirectory()){
				getAllFilePath(files[i].getAbsolutePath());
			}
		}
	}
aaaabbbccd9876 2013-11-01
  • 打赏
  • 举报
回复
你这写的不对

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧