1. 입출력(IO)이란?
- Input과 Output의 약자
- 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는 것
- 장치와 입출력을 위해서는 하드웨어 장치에 직접 접근이 필요한데 다양한 매체에
존재하는 데이터들을 사용하기 위해 입출력 데이터를 처리할 공통적인 방법으로 스트림 이용

2. File 클래스
- java.io 패키지
- 파일/디렉토리(폴더)를 관리하는 클래스
(파일/디렉토리 존재 유무 관계 없음)
- 파일 생성, 제거, 이름, 크기, 마지막 수정일, 존재여부 등의 기능 제공
File 클래스 메서드
| boolean mkdir() : 디렉토리 생성 | boolean isFile() : 현재 File 객체가 관리하는게 파일이면 true |
| boolean mkdirs() : 경로상의 모든 디렉토리 생성 | boolean isDirectory() : 현재 File 객체가 관리하는게 디렉토리 true |
| boolean createNewFile() : 파일 생성 | boolean exists() : 파일/디렉토리가 존재하면 true, 아님 false |
| boolean delete() : 파일/디렉토리 삭제 | long length() : 파일 크기 반환 |
| String getName() : 파일 이름 반환 | long lastModified() : 파일 마지막 수정일 (1970.01.01 09:00 부터 현재까지 지난 시간을 ms 단위로 반환) |
| String parent() : 파일이 저장된 디렉토리 반환 | String[] list() : 디렉토리 내 파일 목록을 String[] 배열로 반환 |
| String getPath() : 전체 경로 반환 | File[] listFiles() : 디렉토리 내 파일 목록을 File[] 배열로 반환 |
[개발자 상식]
OS : 운영 체제
Windows : 폴더 == Linux / Mac : 디렉토리
- 경로 표기 방법(하위 폴더)
Windows : \ (백슬래시)
Linux/Mac : / (슬래시)
-> Java는 모든 운영체제가 호환 되기 때문에
경로 표기 방법도 모두 호환된다!!
최상위 경로(root) : / 또는 \
- Windows : C드라이브, D드라이브...
- Linux/mac : /, /Users
#예제 File 클래스로 객체 생성 + 폴더 관리
[service]
public void test1() {
// directory == folder
// C"/io_test/20240731 경로의 폴더를 관리
File directory = new File("/io_test/20240731");
System.out.println(directory.getPath());
System.out.println("폴더 존재 유무 : " + directory.exists());
// 지정된경로의 폴더가 존재하지 않는 경우
if(!directory.exists()) {
// 폴더(디렉토리) 모두 생성
directory.mkdirs();
System.out.println("폴더가 생성되었습니다");
}
}
#예제2 File 객체를 이용해서 지정된 경로에 파일 생성하기
[service]
public void test2() {
// 경로 표기 방법 : \ 또는 /
// \ 는 문자열(String)에서
// Escape 문자(\n, \t...)를 위한 키워드 이기 때문에
// \ 문자열을 나타내고 싶으면 "\\" 두번 작성해야 한다!!
// "\\" -> \
File file = new File("\\io_test\\20240731\\파일 생성.txt");
System.out.println("\\io_test\\20240731\\파일 생성.txt");
// 지정된 경로의 파일이 존재하지 않는다면
if(!file.exists()) {
try { // 예외가 발생할 것 같은 구문을 내부에 작성 후 시도
// 파일 생성이 성공한 경우
if(file.createNewFile()) {
System.out.println(file.getName() + "파일이 생성 되었습니다");
}
}catch(IOException e) {
System.out.println("----파일 생성 중 예외 발생----");
e.printStackTrace();
//예외 종류, 메시지, 예외가 발생한 위치 출력
}
}
}
#결과

#예제3 File 클래스 제공 메서드 활용
[service]
public void test3() {
// File 객체를 생성하여
// 현재 프로젝도 폴더를 관리
// C:\workspace\04_Java\11_io
File project = new File("\\workspace\\04_Java\\11_io");
// File[] listFiles()
// : 디렉토리 내 파일 목록을 File[] 배열로 반환
File[] files = project.listFiles();
for(File f:files) {
// 파일의 모든 경로(절대 경로) 출력
// System.out.println(f.toString());
String fileName = f.getName();
// 마지막으로 수정한 날짜
// -> 1970.01.01 09:00:00.00 기준으로
// 지난 시간 만큼을 ms 단위로 반환
long lastModified = f.lastModified();
// SimpleDateFormat :
// 간단히 날짜 형식을 지정할 수 있는 기능을 제공하는 클래스
// y : year(연도)
// M : month(월)
// d : day (일)
// a : am/pm(오전, 오후)
// h : hour(시)
// m : minute(분)
SimpleDateFormat sdf
= new SimpleDateFormat("yyyy-MM-dd a h:mm");
// 시간을 지정된 형식으로 변환
String date = sdf.format(lastModified);
// 파일 유형
String type = null;
if(f.isFile()) type = "파일";
else type = "폴더";
String kb = null;
if(f.isFile()) { // 파일인 경우에만
// 파일 크기
long fileSize = f.length(); // Byte 단위
// Byte -> KB 변경
long size = fileSize / 1024;
if(size < 1 ) size = 1; // 1KB 미만은 1로 표시
kb = size + "KB";
}
// 출력할 문자열
String result
= String.format("%-20s %-20s %-5s %-10s",
fileName, date, type,
kb == null ? "" : kb);
System.out.println(result);
}
}'BackEnd > Java' 카테고리의 다른 글
| [Java]입출력(IO) InputStream과 ObjectStream (0) | 2024.08.12 |
|---|---|
| [Java]입출력(IO) Stream (0) | 2024.08.12 |
| [Java]예외처리(exception) 사용자 정의 예외 (0) | 2024.08.12 |
| [Java]예외처리(Exception) throw와 throws 구분하기 (0) | 2024.08.12 |
| [Java]예외처리(Exception) try~catch문 예제 (0) | 2024.08.12 |