Java

[Java] 폴더 생성 - File mkdir()/ mkdirs()

디벨로펄 2022. 6. 14.
반응형

안녕하세요. 펄이라고 합니다.
원하는 폴더에 파일을 생성하는 기능을 구현하는 도중, 폴더 경로가 없을 경우에는 파일이 생성되지 않는 다는 것을 알게되었습니다.

이런 상황에서는 미리 폴더를 생성해야 하는데, mkdir을 쓰니 폴더가 생성되지 않았습니다.


상위 폴더가 있을 경우 폴더 생성 - mkdir()

mkdir()은 상위 폴더가 있는 경우에만 폴더 생성이 가능합니다.
예를 들어 C:₩users₩a₩b폴더 생성을 원하는 경우 C:₩users₩a폴더가 이미 생성되어 있어야 합니다.

import java.io.File;

public class testMain {
	public static void main(String[] args) {
		File f = new File("C:\\test\\test");
        
        // 생성 안되는 코드.
		if (!f.exists()) {
			if (f.mkdir()) {
				System.out.println("file 1 " + f + "폴더 생성됨.");
			}
		}
        
        // 생성되는 코드 : C라는 경로가 있기 때문에 C:\\test 폴더가 생성된다.
		f = new File("C:\\test");
		if (!f.exists()) {
			if (f.mkdir())
				System.out.println("file 2 " + f + "폴더 생성됨.");
		}
	}
}

기존에 특정 폴더가 반드시 있어야 하는 경우 mkdir()을 사용하고, 경로에 해당하는 폴더가 없을 경우 에러를 띄우는 방식으로 사용할 수 있을 것 같습니다.

상위 폴더가 없어도 폴더 생성 - mkdirs()

mkdirs()는 상위 폴더가 없는 경우에도 원하는 경로에 폴더를 생성하게 됩니다.

 

import java.io.File;

public class testMain {
	public static void main(String[] args) {
    	// 상위 폴더의 존재가 필요하지 않아 항상 생성됩니다.(모든 상위폴더를 생성)
		File f = new File("C\\test\\test\\test");
		if (!f.exists()) {
			if (f.mkdirs())
				System.out.println("file " + f + "폴더 생성됨.");
		}
	}
}

위의 경우 C:\test, C:\test\test, C:\test\test\test 3개의 폴더가 생성됩니다.

 

적재 적소에 활용하면 좋을 것 같지만, 현재는 mkdirs() 가 좀 더 편해보이네요.

반응형

댓글