当前位置:编程学习 > JAVA >>

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

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

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;
}
}
java 递归 遍历文件夹 --------------------编程问答-------------------- 你这写的不对 --------------------编程问答--------------------

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());
}
}
}
--------------------编程问答--------------------
引用 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();
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,