[JAVA] 정리/파일(file)

파일(file) - 1. 파일, 폴더 정보 확인

쎈코 2023. 2. 26. 15:01

1. 파일/디렉토리 조작
- 윈도우 탐색기로 하는 행동 > 자바로 구현
- 파일(파일) > 정보 확인, 새로 만들기, 이름 바꾸기, 이동하기, 삭제하기 등...
- 폴더(디렉토리) > 정보 확인, 새로 만들기, 이름 바꾸기, 이동하기, 삭제하기 등...


2. 파일 입출력
- 메모장으로 하는 행동
- 텍스트 입출력(읽고 쓰기)
- 메모장, 이클립스 등... 텍스트 편집기가 하는 일 > 자바로 구현 가능

 

 

 

1. 파일의 정보를 확인하는 일

C:\class\code\java\file\test.txt

자바 프로그램 > 외부에 존재하는 파일에 접근
1. 외부 파일을 참조하는 객체를 생성 > 참조객체를 만들어야 함(나 대신 그 파일을 접근할 수 있는 능력을 가진 대리인)
2. 우리는 그 파일을 직접 조작하는게 아니라 내 손에 있는 참조 객체를 조작 -> 외부 파일에 적용됨(like as 아바타)


파일 경로(문자열로 가지고 있어야 함)
String path = "C:\\class\\code\\java\\file\\test.txt";      //escape 안되도록 \\넣어줘야 함

 

파일 참조 객체 > java.io.File 클래스
File file = new File(path); //참조객체를 인스턴스 만들어줌
// file에 path 통로를 알려줬으니, 내가 File에게 명령 내리면 file이 path경로에 가서 건드림


해당 경로에 파일이 실제로 존재하는지?
System.out.println(file.exists());

 

if(file.exists()) {                                         //파일이 있는지 확인해야 하는 작업이 무조건 선행 되어야 함

파일이 있으면 true라고 답함. true라고 답할때만 파일 조작 가능
System.out.println("파일 있음");

System.out.println(file.getName());         //test.txt

System.out.println(file.isFile());               //true. 너 파일이니? 파일 -> true
System.out.println(file.isDirectory());      //false. 너 폴더니? 폴더 아님 -> false

System.out.println(file.length());             //19 : 파일 크기(byte)

System.out.println(file.getAbsolutePath());      //C:\class\code\java\file\test.txt <- 처음 위치한 경로. path값

//------------------------------------------

System.out.println(file.lastModified());             //1677219019046 <- 최종 수정한 날짜(초 tick)
System.out.println(file.isHidden());                  //false. 숨김파일이니? 아니오 -> false
System.out.println(file.getParent());                //C:\class\code\java\file. 현재 있는 파일의 상위 폴더경로

 

//tick(초) > Calendar
Calendar c1 = Calendar.getInstance();

 

System.out.println(c1.getTimeInMillis());        //현재시간의 tick. get() 메소드

 

c1.setTimeInMillis(file.lastModified());            //set() 메소드. tick > Calendar

//기존 시간 대신 file.lastModified() 시간으로 바뀜

System.out.printf("%tF %tT\n", c1, c1);

} else {
//false일땐 파일 조작 불가
System.out.println("파일 없음");
}

 

2. 폴더의 정보를 확인하는 일

폴더에 접근해서 폴더 정보 알아보기
- 폴더(Folder), 디렉토리(Directory) (둘이 같은 말)
- 폴더는 공간이라고 보면 안됨. 폴더도 파일임. 폴더라는 파일 자체는 아무것도 가지고 있지 않아서 크기가 늘 0임

폴더 경로
String path = "C:\\class\\code\\java\\file";

폴더 참조 객체 > 다시 클래스는 File로 해야 함
File dir = new File(path);

//폴더 != 파일 인데 클래스명이 File임 > 디렉토리는 파일의 일종이다.
//사실 폴더라는건 존재하지 않음. 폴더는 파일 중 하나

if(dir.exists()) {
System.out.println("폴더 있음");

System.out.println(dir.getName());      //file
System.out.println(dir.isFile());            //false
System.out.println(dir.isDirectory());   //true

System.out.println(dir.length()); //0 <- 폴더의 크기

(★★★) 폴더 자체의 크기는 항상 0이다. 폴더는 크기라는 개념이 존재하지 않음.
System.out.println(dir.getAbsolutePath()); //C:\class\code\java\file <- 처음 위치한 경로. path값

//------------------------------------------

System.out.println(dir.lastModified()); //1677218979274 <- 최종 수정한 날짜(초)
System.out.println(dir.isHidden());      //false
System.out.println(dir.getParent());    //C:\class\code\java

}else {
System.out.println("폴더 없음");
}