繁体   English   中英

我如何获取Java目录中所有文件和文件夹的列表

[英]How would i get a list of all files and folders in a directory in java

我试图编写一种方法来获取目录中的所有目录和文件,最后决定放弃并在此处询问。

我知道这已经被问过几次了,并且已经得到回答,但这有点困难。

我确实得到了这段代码

    public static void listf(String directoryName, ArrayList<File> files)
    {
        File directory = new File(directoryName);

        // get all the files from a directory
        File[] fList = directory.listFiles();
        for (File file : fList)
        {
            if (file.isFile())
            {
                files.add(file);
            } else if (file.isDirectory())
            {
                listf(file.getAbsolutePath(), files);
            }


        }
        System.out.println(files);
    }

它提供了很多帮助,但我还需要它提供ei中的目录。

C:\\Users\\UserName\\Desktop\\Folder\\Folder1\\a.txt
C:\\Users\\UserName\\Desktop\\Folder\\Folder1\\b.txt

C:\\Users\\UserName\\Desktop\\Folder\\Folder2\\c.txt

我的第一个代码:

public class FileTransfer
{
    private final static File testFileFolder = new File("C:\\Users\\Melaia\\Desktop\\Send\\");
    private static File[] filesInFolder;

    private static String[] listOfFilesInFolder;

    private static int noOfFilesInFolder, k = 0;

    public static void startupFileSend()
    {


        filesInFolder = testFileFolder.listFiles();
        noOfFilesInFolder = (filesInFolder.length);



        for(int zzz = 0; zzz <= noOfFilesInFolder; zzz++)
        {



            if(filesInFolder[k].isDirectory())
            {
                File[] file1 = filesInFolder[k].listFiles();

                listOfFilesInFolder[k] = file1[k].getName() + ";";
            }
            else
            {
                listOfFilesInFolder[k] = filesInFolder[k].getName();
            }

            System.out.println(listOfFilesInFolder[k]);

        }


    }
}

但这给了我这个例外:

Exception in thread "main" java.lang.NullPointerException
    at Com.org.FileTransfer.startupFileSend(FileTransfer.java:32)
    at Com.org.Main.main(Main.java:7)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

请有人可以给我任何建议。

谢谢卢克。

1)像这样初始化一个listOfFilesInFolder

listOfFilesInFolder = new String[noOfFilesInFolder]

2)不确定这是否是唯一的问题,但需要更改

zzz <= noOfFilesInFolder

zzz < noOfFilesInFolder

3)另外,您永远不会更改k变量,不确定是否是预期的。

由于您使用的是Java 7,因此不必理会和使用FileVisitor

创建一个甚至匿名的类来管理目录中的所有文件, Files.walkFileTree()方法将为您遍历文件,并在不同事件上执行您放置在访问者中的代码。

您也可以扩展SimpleFileVisitor 您可以在此处看到两个访问者示例(一个用于递归副本,另一个用于递归删除)。

由于您似乎要上传,因此您可能还想使用Files.copy() ,它可以采用源路径并将其内容发送到OutputStream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM