Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回ArrayListMethodJava_Java_File_Methods_Arraylist - Fatal编程技术网

返回ArrayListMethodJava

返回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

当我编译时,我没有得到任何错误,但是该方法中的ArrayList没有进入main

所有条目都已添加到Folders ArrayList中,但没有传递到main方法中

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;
    }
}