返回ArrayListMethodJava
当我编译时,我没有得到任何错误,但是该方法中的ArrayList没有进入main 所有条目都已添加到Folders ArrayList中,但没有传递到main方法中返回ArrayListMethodJava,java,file,methods,arraylist,Java,File,Methods,Arraylist,当我编译时,我没有得到任何错误,但是该方法中的ArrayList没有进入main 所有条目都已添加到Folders ArrayList中,但没有传递到main方法中 public static ArrayList<File> Process(File aFile) { ArrayList<File> Folders = new ArrayList<File>(); if(aFile.isFile()) { String filenom
public static ArrayList<File> Process(File aFile)
{
ArrayList<File> Folders = new ArrayList<File>();
if(aFile.isFile())
{
String filenom = aFile.getPath();
if (filenom.toLowerCase().endsWith(".java")){
Folders.add(aFile);
}
}
else if (aFile.isDirectory()) {
File[] listOfFiles = aFile.listFiles();
if(listOfFiles!=null) {
for (int i = 0; i < listOfFiles.length; i++)
Process(listOfFiles[i]);
}
else {
System.out.println(" [ACCESS DENIED]");
}
}
return (Folders);
}
public static void main(String[] args) throws IOException
{
ArrayList<File> FAddress = new ArrayList<File>();
File dir = new File("C:/");
FAddress = Process(dir);
if (FAddress.isEmpty())
System.out.println("WTF?!");
else{
for (File fl : FAddress) {
String FileAddress = fl.getName();
System.out.println(FileAddress);
}
}
}
你创造
ArrayList<File> Folders = new ArrayList<File>();
在每次运行过程中。此函数具有递归,因此,由于从C:/folder开始,因此永远不会更新此数组
要进行正确的处理,您应该使用以下方法:
public static ArrayList<File> Process(File aFile) {
ArrayList<File> Folders = new ArrayList<File>();
Process(aFile, Folders);
return folders;
}
private static void Process(File aFile, ArrayList<File> Folders) {
... //your implementation without defining Folders and returning it
}
如果您需要处理多个级别的文件树,这将非常有用。您可以创建
ArrayList<File> Folders = new ArrayList<File>();
在每次运行过程中。此函数具有递归,因此,由于从C:/folder开始,因此永远不会更新此数组
要进行正确的处理,您应该使用以下方法:
public static ArrayList<File> Process(File aFile) {
ArrayList<File> Folders = new ArrayList<File>();
Process(aFile, Folders);
return folders;
}
private static void Process(File aFile, ArrayList<File> Folders) {
... //your implementation without defining Folders and returning it
}
如果您需要处理多个级别的文件树,这将非常有用。问题在于递归-您可以正确识别文件对象是否为目录,并对其调用process:
问题在于递归-您可以正确识别文件对象是否为目录,并对其调用进程:
您可以定义一个类级变量static ArrayList Folders=new ArrayList;然后使用相同的方法填充文件
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class test {
static ArrayList<File> Folders = new ArrayList<File>();
public static void Process(File aFile) {
if (aFile.isFile()) {
String filenom = aFile.getPath();
if (filenom.toLowerCase().endsWith(".log")) {
Folders.add(aFile);
}
} else if (aFile.isDirectory()) {
File[] listOfFiles = aFile.listFiles();
if (listOfFiles != null) {
for (int i = 0; i < listOfFiles.length; i++)
Process(listOfFiles[i]);
} else {
System.out.println(" [ACCESS DENIED]");
}
}
}
public static void main(String[] args) throws IOException {
File dir = new File("C:/ukba/");
Process(dir);
if (Folders.isEmpty())
System.out.println("WTF?!");
else {
for (File fl : Folders) {
String FileAddress = fl.getName();
System.out.println(FileAddress);
}
}
Folders = null;
}
}
您可以定义一个类级变量static ArrayList Folders=new ArrayList;然后使用相同的方法填充文件
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
public class test {
static ArrayList<File> Folders = new ArrayList<File>();
public static void Process(File aFile) {
if (aFile.isFile()) {
String filenom = aFile.getPath();
if (filenom.toLowerCase().endsWith(".log")) {
Folders.add(aFile);
}
} else if (aFile.isDirectory()) {
File[] listOfFiles = aFile.listFiles();
if (listOfFiles != null) {
for (int i = 0; i < listOfFiles.length; i++)
Process(listOfFiles[i]);
} else {
System.out.println(" [ACCESS DENIED]");
}
}
}
public static void main(String[] args) throws IOException {
File dir = new File("C:/ukba/");
Process(dir);
if (Folders.isEmpty())
System.out.println("WTF?!");
else {
for (File fl : Folders) {
String FileAddress = fl.getName();
System.out.println(FileAddress);
}
}
Folders = null;
}
}