import java.util.*;
import java.io.*;
public final class FileListing2
{
public static void main(String... aArgs) throws FileNotFoundException
{
File startingDirectory= new File(aArgs[0]);
List<File> files = FileListing.getFileListing(startingDirectory);
//print out all file names, in the the order of File.compareTo()
for(File file : files )
{
System.out.println(file);
}
}
static public List<File> getFileListing(File aStartingDir) throws FileNotFoundException
{
validateDirectory(aStartingDir);
List<File> result = getFileListingNoSort(aStartingDir);
Collections.sort(result);
return result;
}
static private List<File> getFileListingNoSort(File aStartingDir) throws FileNotFoundException
{
List<File> result = new ArrayList<File>();
File[] filesAndDirs = aStartingDir.listFiles();
List<File> filesDirs = Arrays.asList(filesAndDirs);
for(File file : filesDirs)
{
result.add(file); //always add, even if directory
if ( ! file.isFile() )
{
//must be a directory
//recursive call!
List<File> deeperList = getFileListingNoSort(file);
result.addAll(deeperList);
}
return result;
}
}
static private void validateDirectory (File aDirectory) throws FileNotFoundException
{
if (aDirectory == null)
{
throw new IllegalArgumentException("Directory should not be null.");
}
if (!aDirectory.exists())
{
throw new FileNotFoundException("Directory does not exist: " + aDirectory);
}
if (!aDirectory.isDirectory())
{
throw new IllegalArgumentException("Is not a directory: " + aDirectory);
}
if (!aDirectory.canRead())
{
throw new IllegalArgumentException("Directory cannot be read: " + aDirectory);
}
}
}
我从这个站点复制了这段代码,并试图使其适应我们的环境。不幸的是,我无法编译 $%!@#*($ 东西。我在 main 方法中不断收到错误:错误:重复修饰符。
public static void main(String... aArgs) throws FileNotFoundException
是标记为错误的行。
我在这里看不到任何重复的修饰符,我所有的花括号和括号似乎都在正确的位置,我完全被难住了。
这是我第一次使用可变参数...我不确定这是否给我带来了问题?我扫描了 Java 文档,但没有发现任何危险信号。此外,当我更改String...
为String[]
. 我觉得我可能会得到一些空值,所以我宁愿留String...
在方法中。
有人看到我遗漏的任何东西吗?我觉得我在春季脑筋急转弯中看着那个巴黎......