簡體   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