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