[英]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.