import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class FileTest_3 {
public static void main(String[] args) {
fileCheck(new File("D:\\Movie"));
}
public static void fileCheck(File dir) {
if(!dir.exists()) {
System.out.println(dir + "is Not found");
return;
}
// 해당 디렉토리 안에 있는 모든 파일과 디렉토리 객체를 가져옴
File[] fileList = dir.listFiles();
// 하위 디렉토리의 인덱스를 저장하기 위한 List
List<Integer> subDir = new ArrayList<>();
// 마지막 수정날짜를 표시하기 위한 포맷
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a HH:mm");
System.out.println("<< " + dir.getName() + "의 정보 >>");
for(int i=0; i<fileList.length; i++) {
String attr = "";
String size = "";
if(fileList[i].isDirectory()) {
attr += "<DIR>";
subDir.add(i);
} else {
attr += fileList[i].canRead() ? "R" : "-";
attr += fileList[i].canWrite() ? "W" : "-";
attr += fileList[i].isHidden() ? "H" : "-";
size += fileList[i].length();
}
// printf를 사용하여 format지정
System.out.printf
("%s %5s %12s %s",
sdf.format(fileList[i].lastModified()),
attr,
size,
fileList[i].getName()
);
System.out.println();
}
// 하위 디렉토리의 정보를 확인하기 위해 재귀호출
for(int i=0; i<subDir.size(); i++) {
System.out.println();
fileCheck(fileList[subDir.get(i)]);
}
}
}
소스를 가져가서 자신의 Directory정보를 확인해보는 것을 추천드립니다.
코드만 보는것보다 직접 결과를 확인하시면 더 직관적으로 이해가 잘 되실겁니다.