금요일, 3월 29
Shadow

#055 자바 코딩으로 디렉토리 생성

mkdirs() 라는 메서드(함수)로, 디렉토리(폴더)를 만들 수 있습니다.

mkdirs() 는 디렉토리 생성에 성공하면 true 를 반환하기에, 실패시 에러를 출력하려면 if문 속에서 느낌표를 붙여, 논리값을 반전시켜 주어야 합니다.

같은 이름의 디렉토리가 이미 있을 때나

디렉토리명에 허용되지 않는 문자(*, ? 등)가 있을 때

에는 아래 예제의 경우, “디렉토리 생성 실패”라는 메시지가 출력됩니다.

여러 개의 중첩된 폴더를 한꺼번에 생성하려면 슬래시(/) 기호로 패스를 구분해 줍니다.

mkdir() 이라는 단수형 이름의 메소드로도 디렉토리를 만들 수 있지만, 여러개를 한꺼번에 만들 수는 없습니다.

디렉토리 만들기 예제

소스 파일명: Example.java

import java.io.*;

public class Example {
public static void main(String[] args) {

// MY_TEST_DIR 이라는 하위 폴더 만들기

File f = new File(“MY_TEST_DIR”);
if (!f.mkdirs())
System.err.println(“디렉토리 생성 실패”);

// MY_TEST_DIR 이라는 하위 폴더 밑에
// 333 이라는 하위 폴더 또 만들기
// 즉, MY_TEST_DIR/333 이렇게 중첩된 폴더 한꺼번에 생성

f = new File(“MY_TEST_DIR/333”);
if (!f.mkdirs())
System.err.println(“디렉토리 생성 실패”);

}
}

위의 자바 코드를 실행하면, 현재 디렉토리에 MY_TEST_DIR 이라는 폴더가 생기고, 그 안에 333 이라는 폴더가 또 들어 있을 것입니다.

File 클래스의 delete() 메소드(함수)로, 파일이나 디렉토리를 지울 수 있습니다. 파일 지우기에 실패했을 때는, false 를 반환합니다.

자바: 파일 삭제 예제 (Java: Delete File Example)

파일명: Foo.java
(현재 디렉토리에 test_9999.txt 라는 이름의 파일이 존재할 때는 그 파일을 지우고, 없을 때에는 에러 메시지를 출력합니다.)

import java.io.*;

public class Foo {
public static void main(String[] args) {

String s = “test_9999.txt”;
File f = new File(s);

if (f.delete()) {
System.out.println(“파일 또는 디렉토리를 성공적으로 지웠습니다: ” + s);
} else {
System.err.println(“파일 또는 디렉토리 지우기 실패: ” + s);
}

}
}

파일명 대신에 디렉토리명을 지정해 주면, delete() 로 디렉토리도 지울 수 있지만, 비어 있지 않은 디렉토리는 지울 수 없습니다.

컴파일 및 실행 결과:

D:\Z>javac Foo.java && java Foo
파일 또는 디렉토리를 성공적으로 지웠습니다: test_9999.txt

D:\Z>java Foo
파일 또는 디렉토리 지우기 실패: test_9999.txt

D:\Z>

test_9999.txt 라는 파일 지웠기에, 두번째 실행했을 때는 파일이 없어서 에러 메시지가 출력되었습니다.

오늘 날짜 이름으로 된 디렉토리(폴더)를 만드는 방법입니다.

예를 들어 오늘이 2007년 3월 27일이라면, 하드의 현재 디렉토리에
2007-03-27
이라는 이름의 하위 디렉토리가 자동으로 생성됩니다.

오늘 날짜로 된 폴더명, 디렉토리명 만들기 예제

소스 파일명: Example.java

import java.io.*;
import java.util.*;

public class Example {
public static void main(String[] args) {

Calendar cal = Calendar.getInstance();
String dateString;

dateString = String.format(“%04d-%02d-%02d”, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));

File f = new File(dateString);
if (!f.mkdirs())
System.err.println(“디렉토리 생성 실패”);

}
}

이미 같은 이름의 디렉토리가 존재할 경우에는 “디렉토리 생성 실패” 라는 에러가 발생합니다. 위의 코드를 실제 사용할 때에는 에러를 출력하지 않는 것이 편리할 것입니다.

즉, if문을 없애고 그냥
f.mkdirs();
이렇게 하면 됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.