5-1.(3) java io File DIR 정보출력

zhyun·2020년 9월 25일
0

HighJava

목록 보기
38/67

T02_FileTest
=> 중간에 20200925 줄부터 보면댐

1.출력할 디렉토리 정보를 갖는 File 객체 생성

 File f4 = new File("D:/A_TeachingMaterial");

		displayfilelist(f4);

2. 지정된 디렉토리(폴더)에 포함된 파일과 디렉토리 목록 보여주는 메서드

displayfilelist()

public class T02_FileTest {
	public static void main(String[] args) {
    		File f4 = new File("D:/A_TeachingMaterial");

		displayfilelist(f4);

	}
	private static void displayfilelist(File dir) {
		System.out.println("[" + dir.getAbsolutePath() + "] 디렉토리의 내용");

		// 디렉토리 안의 모든 파일 목록을 가져온다.
		File[] files = dir.listFiles();//리턴을 배열로 받음

		// 하위 디렉토리 정보를 저장한 ArrayList 생성(File배열의 인덱스 저장)
		List<Integer> subDirList = new ArrayList<Integer>();

		// 날짜를 출력하기 위한 형식 설정
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm");

		for (int i = 0; i < files.length; i++) {
			String attr = "";// 파일의 속성(읽기, 쓰기, 히든, 디렉토리 구분)
			String size = "";// 파일크기

			if (files[i].isDirectory()) {//만약 디렉토리면
				attr = "<DIR>"; // attr 셋팅
				subDirList.add(i); //저장
			} else {
				size = files[i].length() + ""; //사이즈
				attr += files[i].canRead() ? "R" : " ";
				attr += files[i].canWrite() ? "W" : " ";
				attr += files[i].isHidden() ? "H" : " ";

			}
			 //%5s : 5자리로 끊어줌(우측정렬), %12s:12자리(우측정렬)	  
			System.out.printf("%s %5s %12s %s\n"
					, sdf.format(new Date(files[i].lastModified()))
					, attr, size, files[i].getName());
		}

		int dirCount = subDirList.size(); // 폴더안의 하위폴더 개수 구하기
		int fileCount = files.length - dirCount;// 폴더안의 파일 개수 구하기

		System.out.println(fileCount + "개의 파일, " + dirCount + "개의 디렉토리");

		System.out.println();

		for (int i = 0; i < subDirList.size(); i++) {
			// 하위 폴더의 내용들도 출력하기 위해 현재 메서드를 재귀호출하여 처리한다.
			displayfilelist(files[subDirList.get(i)]);
		}
	}
}

displayfilelist static 메서드

1) 디렉토리안의 모든 파일 목록을 가져올 때
File[] files = dir.listFiles();

2) 하위 디렉토리 정보를 저장한 ArrayList 생성 (File배열의 인덱스 저장)
List subDirList = new ArrayList();

3) 날짜를 출력하기 위한 형식 설정
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm");

4) 정보 출력 메서드 종류

  • 파일 사이즈 : .length()
  • 읽기 가능? : .canRead()
  • 작성 가능? : .canWrite()
  • 숨김 가능? : .isHidden()

5) System.out.printf(), .lastModified()

System.out.printf("%s %5s %12s %s\n"
		, sdf.format(new Date(files[i].lastModified()))
		, attr, size, files[i].getName());  
  • .lastModified()
    : 파일수정 확인하는 방법

  • System.out.printf("출력 서식",출력할 내용);
    : 출력 서식 : "%s %5s %12s %s\n"
    : 출력 내용 : sdf.format(new Date(files[i].lastModified())), attr, size, files[i].getName()
    : %s : 문자열 형식으로 출력
    : %5s : 전체자리가 5이고 문자열 형식으로 출력 (오른쪽 정렬)
    : %12s : 전체자리가 12이고 문자열 형식으로 출력 (오른쪽 정렬)
    : %\n: 줄바꿈 기능
    : %d : 정수가 입력되는 형식

  • int dirCount = subDirList.size();
    : 폴더안의 하위폴더 개수 구하기

  • int fileCount = files.length - dirCount;
    : 폴더안의 파일 개수 구하기

  • 하위폴더의 내용들도 출력하기 위해 현재 메서드를 재귀호출하여 처리

for (int i = 0; i < subDirList.size(); i++) {
	displayfilelist(files[subDirList.get(i)]);
}  
profile
HI :)

0개의 댓글