[英]Problems with “Config.Msi” directory while trying to recursively list all files from system root using java 8
我試圖遞歸地列出系統根目錄,目錄和單個文件中的所有文件,代碼運行無一例外,但是當代碼找到“ Config.Msi”作為目錄時,它給我列出和查找子目錄的函數錯誤。
//Root path scan
for (File file : FilesInDisk) {
if (file.isFile()){
System.out.println("---------------------------------------------------------------------------------------------------------");
System.out.println("[File Detected] => [ " + file.getName()+" ]");
fileCache.add(fileIndex,file);
System.out.println("[ Absolute path added to files cache ] [Details] => "+file.getAbsolutePath());
fileIndex=fileIndex+1;
System.out.println("---------------------------------------------------------------------------------------------------------");
}
else
if (file.isDirectory()){
System.out.println("---------------------------------------------------------------------------------------------------------");
//Walk into directory and walk more while directories still exist then return and go on with next one
System.out.println("[Folder Detected] => [ " + file.getName()+" ]");
System.out.println("[ Absolute path added to files cache ] [Details] => "+file.getAbsolutePath());
subDirs(file);
folderIndex=folderIndex+1;
System.out.println("---------------------------------------------------------------------------------------------------------");
}
System.out.println("=> Files Scanned: " + fileIndex);
System.out.println("Scanning on progress...");
}
}
這是subDirs函數
//Look inside directories.
public void subDirs(File ifile){
File arrayDir[]=ifile.listFiles();
for (File arr :arrayDir){
System.out.println("===> " + arr);
}
}
[Folder Detected] => [ Config.Msi ]
[ Absolute path added to files cache ] [Details] => C:\Config.Msi
Exception in thread "main" java.lang.NullPointerException
at malwaredestroyer.MalwareDestroyer.subDirs(MalwareDestroyer.java:58)
at malwaredestroyer.MalwareDestroyer.walk(MalwareDestroyer.java:89)
at malwaredestroyer.MalwareDestroyer.main(MalwareDestroyer.java:100)
這是我從輸出控制台收到的錯誤消息,
File.listFiles()
的文檔說:
返回:抽象路徑名數組,表示該抽象路徑名表示的目錄中的文件和目錄。 如果目錄為空,則數組為空。 如果此抽象路徑名不表示目錄,或者發生I / O錯誤,則返回null。
因此,可能發生了I / O錯誤,並且返回了null
。 但是,很難確定這是否是實際問題。
通常,建議盡可能使用java.nio.file
包的類,因為它們在發生故障時會引發異常,並且可以更好地定義其行為。
對於您的用例, Files.walkFileTree
似乎非常適合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.