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);
}
}
}
このサイトからこのコードをコピーし、環境に合わせようとしています。残念ながら、コンパイルする $%!@#*($ を取得できません。メイン メソッドでエラーが発生し続けます: エラー: 修飾子が繰り返されます。
public static void main(String... aArgs) throws FileNotFoundException
エラーのフラグが立てられた行です。
ここには重複した修飾子はありません。中括弧と括弧はすべて適切な場所にあるようで、完全に困惑しています。
可変引数を使用するのはこれが初めてです...それが問題なのかどうかわかりませんか? Java ドキュメントをスキャンしましたが、危険信号は見つかりませんでした。その上、に変更String...
すると問題なくコンパイルされString[]
ます。いくつかの null 値を取得する可能性があると思うのでString...
、メソッドに残しておきたいと思います。
私が見逃しているものを見た人はいますか?春の難問であのパリを見ている気がする…。