Java を使用して、.exe ファイルを再帰的に検索するメソッドを作成しようとしています。私が抱えている問題は、「C:\Program Files (x86)\Google\CrashReports」のディレクトリに関してです。
何をしようとしても、このファイルが原因で常に NullPointerException が発生するようです。再帰的にチェックするファイルのリストに追加しないようにするか、少なくとも検査するファイルのリストに追加した場合はスキップするようにしました。
現状では、私のコードは正しくありませんが、これはむしろ論理的な誤謬である可能性が非常に高く、Java がこのファイルを読み取ることができるとどのように考えているかについての説明をいただければ幸いです。
private static List<String> exefiles = new ArrayList<String>();
public void findExe(File rootDir) throws SecurityException, IOException{
List<File> files = new ArrayList<File>(Arrays.asList(rootDir.listFiles()));
List<File> directories = new ArrayList<File>();
Iterator<File> iterator = files.iterator();
if(files.size() > 0){
while(iterator.hasNext()){
File currentFile = iterator.next();
if(currentFile.getName().endsWith(".exe")){
exefiles.add(currentFile.getAbsolutePath());
}else if(currentFile.isDirectory()){
if(currentFile.canRead()){
System.out.println("We can read " + currentFile.getAbsolutePath());
if(currentFile.listFiles().length > 0){
System.out.println(currentFile.getAbsolutePath() + " has a length greater than 0");
directories.add(currentFile);
}else{System.out.println(currentFile.getAbsolutePath() + " does not have any files in it");}
}else{
System.out.println("Could not add " + currentFile.getAbsolutePath() + " to directories because it could not be read");
}
}else;
}
}
Windows でファイルのプロパティを開くと、システム グループと管理者グループにはフル コントロールがありますが、ユーザー グループには「特別なアクセス許可」しかありません。
Java 7 が java.nio.file パッケージを介して属性を処理する簡単な方法を提供していることは知っていますが、このオプションは私のニーズには適していません。