자바

JAVA STEP 40. File/Directory 조작

IT의 큰손 2023. 2. 24. 18:52
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