21. 자바로 파일 관리하기 [ JAVA ]

duck-ach·2022년 8월 10일
0

JAVA

목록 보기
21/27

java.io.File;

java.io에 파일 및 디렉터리를 관리하는 File클래스가 내장되어 있다.
오늘은 그 File클래스에 관해 공부해보자.

폴더 생성하기

생성방법 :

  • new File(경로, 파일)
  • new File(파일)
    두가지 방법으로 생성할 수 있다.

경로 구분방법 :

  • Window : 백슬래시 \ 를 이용하여 경로를 구분한다.
  • Linux : 슬래시 / 를 이용하여 경로를 구분한다.

생성메소드 :

mkdir() mkdirs()

// 폴더(디렉터리) 만들기
File dir = new File("C:\\storage");

// 존재하지 않으면 만들겠다.
	if(dir.exists() == false) { // if(!dir.exists())
		dir.mkdirs();
	} // 존재하면 삭제한다.
	else {
		dir.delete();
	}

폴더와 파일 생성과 Exception 예외처리

폴더와 파일 생성에는 IOException이 있을 수 있으니 try-catch문을 넣거나 throws문을 넣어 예외처리를 해 주는 것이 좋다.

폴더와, txt파일을 생성해 보았다.

File file = new File("C:\\storage", "my.txt");
		
		try {
			if(file.exists() == false) {
				file.createNewFile();
			}
			else {
				file.delete();
			}
		} catch(IOException e) {
			e.printStackTrace(); // 에러를 콘솔에 찍어라.
		}

무슨 에러가 났는지 콘솔에 찍어달라는 예외 메소드를 넣었다.

관련 메소드

getName()

파일명을 가져온다.

getParent()

자신이 가진 상위폴더(경로)를 가져온다.

isDirectory()

디렉토리(폴더)인지의 여부를 true와 false값으로 반환한다.

isFile()

파일인지의 여부를 true와 false값으로 반환한다.

파일 최근 수정된날짜 출력하기

이렇게 JAVA로도 최근 수정된 날짜를 출력할 수 있다.
lastModified()메소드를 활용하는 방법이다.

최근 수정된날짜 출력 선언

// 마지막으로 수정된 날짜
long lastModifiedDate = file.lastModified();

밑의 예제에서 더 자세히 살펴 보자.

예제 1. 파일 최근 수정된 날짜, 타입, 폴더명 출력하기

File file = new File("C:\\GDJ");		
		File[] list = file.listFiles();
		for(int i = 0; i < list.length; i++) {
			long lastModifiedDate = file.lastModified(); 
			String lastModified = new SimpleDateFormat("yyyy-MM-dd a hh:mm").format(lastModifiedDate);
			System.out.print(lastModified + " \t");
			
			long size = list[i].length();

			if(list[i].isDirectory()) {
				System.out.print("<DIR>" + "\t" + "\t");
			} else {
				System.out.print("\t" + size + "\t");
			}
			
			System.out.println(list[i].getName());
		}

날짜, 타입, 파일종류, Hidden파일은 숨기기

File dir = new File("C:\\GDJ");
		File[] list = dir.listFiles();
		int dirCnt = 0;
		int fileCnt = 0;
		long totalSize = 0;
		
		for(File file : list) {
			
			if(file.isHidden()) {
				continue;
			}
			String lastModifide = new SimpleDateFormat("yyyy-MM-dd a hh:mm").format(file.lastModified());
			String directory = "";
			String size = "";
				if(file.isDirectory()) {
					directory = "<DIR>";
					size = "     ";
					dirCnt++;
				} else {
					directory = "     ";
					size = new DecimalFormat("#,##0").format(file.length()) + "";
					fileCnt++;
					totalSize += Long.parseLong(size.replace(",", ""));
				}
				String name = file.getName();
				
				System.out.println(lastModifide + " " + directory + " " + size + " " + name);
		}
		
		System.out.println(fileCnt + "개 파일 " + new DecimalFormat("#,##0").format(totalSize));

DecimalFormat() 객체는 숫자에 패턴을 지정해 줄 수 있다.

Window(윈도우)와 Linux(리눅스) 등 플랫폼마다 다른 경로 구분자 지원

Window(윈도우)는 백슬래시(\)를 사용하여 경로 구분을 하였고, Linux(리눅스)는 슬래시(/)를 사용하여 경로구분을 하였다.
이렇게 경로구분자를 운영체제마다 자동으로 바꿔주는 아주 친절한 도구가있다.

  • separator
File file = new File("C:" + File.separator + "storage" + File.separator + "my.txt");
	     System.out.println(file.getName());

이렇게 사용하면 된다.
아래는 그냥 폴더를 생성하고 지우는 코드이다.

String sep = File.separator;
		
		File file = new File("C:" + sep + "storage", "my.txt");
		if(file.exists()) {
			file.delete();
		}
		
		File dir = new File("C:" + sep + "storage");
	
		if(dir.exists()) {
			dir.delete();
		} 
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글