我如何得到一个列表的所有文件和文件夹在一个目录在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

相关内容

  • 没有找到相关文章

最新更新