Javaにてファイルの一覧表を作りました。
カレントディレクトリー以下のファイルを長さ付きで出力するのですが、
ゴミ箱があるディレクトリーでは途中で止まってしまいます。
(c:\など)
理由と改善策を教えて下さい。
import java.io.* ;
import java.util.* ;
public class FileDir {
public static void main(String args[]) {
long len = subDir(".", 0);
System.out.println("Dir :.:" + len);
}
static long subDir(String path, int tab) {
File dir = new File(path); String [] fileNM = dir.list(); TreeMap<String, String> map = new TreeMap<String, String>(); for(int i = 0; i < fileNM.length; i++) { String fileName = path + File.separator + fileNM[i]; File file = new File(fileName); if(file.isDirectory()) map.put("b" + fileNM[i], ""); else map.put("a" + fileNM[i], ""); } for(int i = 0; i < fileNM.length; i++) { if(map.size() > 0) { String sBuf = (String)map.firstKey(); map.remove(sBuf); fileNM[i] = sBuf.substring(1); } else fileNM[i] = ""; } long len = 0L; for(int i = 0; i < fileNM.length; i++) { String fileName = path + File.separator + fileNM[i]; File file = new File(fileName); len = len + file.length(); if(file.isDirectory()) { long len1 = subDir(fileName, tab + 1); len = len + len1; System.out.println("Dir :" + fileName + ":" + len1); System.out.println("---------------------------------------------------------------------"); } else { for(int j = 0; j < tab; j++) { System.out.print("\t"); } System.out.println(fileNM[i] + ":" + file.length()); } } return len;
}
}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。