728x90
★ File/Directory 조작
- 윈도우 탐색기로 하는 행동 > 자바로 구현
- 파일 > 정보 확인, 새로 만들기, 이름 바꾸기, 이동하기, 삭제하기 등..
- 폴더 > 정보 확인, 새로 만들기, 이름 바꾸기, 이동하기, 삭제하기 등..
★ 파일 입출력
- 메모장으로 하는 행동
- 텍스트 입출력
- 메모장, 이클립스 등.. 텍스트 편집기
★ 파일 응용
- 파일 > 정보
- 경로 복사 : /Users/kimdaehwan/Desktop/class/code/java/file/test.txt
- 자바 프로그램 > 외부에 존재하는 파일에 접근
- 1. 외부 파일을 참조하는 객체를 생성
- 2. 참조 객체 조작 > 외부 파일에 적용
- 소스코드
String path = "/Users/kimdaehwan/Desktop/class/code/java/file/test.txt";
//파일 참조 객체 > java.io.File 클래스
File file = new File(path);
//해당 경로에 파일이 실제로 존재하는지?
//System.out.println(file.exists());
if(file.exists()) {
//파일 조작
System.out.println("파일 있음");
System.out.println(file.getName()); //test.txt
System.out.println(file.isFile()); //true
System.out.println(file.isDirectory()); //false
System.out.println(file.length()); //19 > 파일 크기(바이트)
//파일이 위치한 경로 출력
System.out.println(file.getAbsolutePath()); ///Users/kimdaehwan/Desktop/class/code/java/file/test.txt
//-----------------------------------------------------------------------
//최종 수정한 시간
System.out.println(file.lastModified()); //1677219060451
System.out.println(file.isHidden()); //false
System.out.println(file.getParent()); ///Users/kimdaehwan/Desktop/class/code/java/file
//tick > Calendar
Calendar c1 = Calendar.getInstance();
System.out.println(c1.getTimeInMillis());
//수정한 시간을 알아보기 쉽게 변경 tick -> Calendar
c1.setTimeInMillis(file.lastModified());
System.out.printf("%tF %tT\n", c1, c1);
}else {
System.out.println("파일 없음");
}
private static void m2() {
//폴더 > 정보
//- 폴더(Folder), 디렉토리(Directory)
//폴더 경로
String path = "/Users/kimdaehwan/Desktop/class/code/java/file";
//폴더 참조 객체
//- 디렉토리는 참조객체이다.
File dir = new File(path);
if (dir.exists()) {
System.out.println("폴더 있음");
System.out.println(dir.getName()); //test.txt
System.out.println(dir.isFile()); //true
System.out.println(dir.isDirectory()); //false
//**** 폴더는 크기는 항상 0이다.
System.out.println(dir.length()); //0> 파일 크기(바이트)
//파일이 위치한 경로 출력
System.out.println(dir.getAbsolutePath()); ///Users/kimdaehwan/Desktop/class/code/java/file/test.txt
//-----------------------------------------------------------------------
//최종 수정한 시간
System.out.println(dir.lastModified()); //1677219060451
System.out.println(dir.isHidden()); //false
System.out.println(dir.getParent()); ///Users/kimdaehwan/Desktop/class/code/java/file
} else {
System.out.println("폴더 없음");
}
}
1. 파일 조작 - 새파일 만들기
- 소스코드
private static void m3() {
// 파일 조작
//- 새 파일 만들기
String path = "/Users/kimdaehwan/Desktop/class/code/java/file/수업.txt";
File file = new File(path);
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2. 파일조작 - 파일명 수정하기
- 소스코드
private static void m4() {
//파일 조작
//- 파일명 수정하기
//- 수업.txt > class.txt
String path = "/Users/kimdaehwan/Desktop/class/code/java/file/수업.txt";
File file = new File(path);
//
String path2 = "/Users/kimdaehwan/Desktop/class/code/java/file/class.txt";
File file2 = new File(path2);
if(file.exists()) {
boolean result = file.renameTo(file2);
System.out.println(result);
}
}
3. 파일 조작 - 파일 이동하기
- 소스코드
private static void m5() {
//파일 조작
//- 파일 이동하기
//파일 경로 : /Users/kimdaehwan/Desktop/class/code/java/move
String path = "/Users/kimdaehwan/Desktop/class/code/java/file/수업.txt";
File file = new File(path);
String path2 = "/Users/kimdaehwan/Desktop/class/code/java/move/test.txt";
File file2 = new File(path2);
if(file.exists()) {
boolean result = file.renameTo(file2);
System.out.println(result);
}
}
4. 파일 조작 - 파일 삭제하기
- 소스코드
private static void m6() {
//파일 조작
//- 파일 삭제하기
String path = "/Users/kimdaehwan/Desktop/class/code/java/file/test.txt";
File file = new File(path);
if(file.exists()) {
boolean result = file.delete(); //진짜 삭제(복구 불가능)
System.out.println(result);
}
}
5.날짜별 폴더 생성
- 소스코드
private static void m9() {
//요구사항] 날짜별 폴더 생성
//- "2023-01-01" ~ "2023-12-31" x 365 생성
//- /Users/kimdaehwan/Desktop/class/code/java/file/plan/2023-01-01
Calendar now = Calendar.getInstance();
now.set(2023, 0, 1);
for(int i=0; i<365; i++) {
String path = String.format("/Users/kimdaehwan/Desktop/class/code/java/file/plan/%tF", now);
File dir = new File(path);
boolean result = dir.mkdir();
System.out.println(result);
now.add(Calendar.DATE, 1);
}
}
6. 폴더 내용 보기(열람기능)
- 소스코드
private static void m12() {
//폴더 내용 보기(어떠한 디렉토리를 찾아갔을때, 해당 자식 폴더나 파일들을 열람할 수 있도록 하는 것)
String path ="/Users/kimdaehwan/Desktop/class/code/java/file";
File dir = new File(path);
if(dir.exists()) {
File[] list = dir.listFiles();
// for(File file : list) {
// System.out.println(file.getName());
// System.out.println(file.isFile()); //파일이니?
// System.out.println(file.isDirectory()); //폴더니?
// System.out.println();
// }
for(File file : list) {
if(file.isDirectory()) {
System.out.printf("[%s]\n", file.getName());
}
}
for(File file : list) {
if(file.isFile()) {
System.out.println(file.getName());
}
}
}
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 42. 재귀 메소드 (0) | 2023.02.27 |
---|---|
JAVA STEP 41. File/Directory 조작 예제 (0) | 2023.02.24 |
JAVA STEP 39. Hashset 직접 구현하기 (0) | 2023.02.24 |
JAVA STEP 38. 컬렉션(HashSet) (0) | 2023.02.24 |
JAVA STEP 37. HashMap 직접 구현하기 (0) | 2023.02.24 |