java.io.File에 대한 Java에서 mkdir ()과 mkdirs ()의 차이점


123

누구 든지이 두 가지 방법의 차이점을 말할 수 있습니까?

  • file.mkdir()
  • file.mkdirs()

23
javadoc에 읽기 : MKDIR을mkdirs
assylias

2
이를 수행하는 새로운 방법은 Files.createDirectories 및 Files.createDirectory 정적 메소드를 사용하는 것입니다. docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
neves

mkdir을 사용한 후 "파일이 지원되지 않음"을 얻을 수 있습니다.
user7856586 apr 05 '182018

둘 사이에 성능 차이가 있습니까? 특히 상위 디렉토리가 이미 존재하는 경우?
Joshua Pinter 2019 년

답변:


158

mkdirs()또한 이것이 나타내는 경로에 상위 디렉토리 를 만듭니다 File.

대한 javadocsmkdirs() :

필요하지만 존재하지 않는 부모 디렉터리를 포함하여이 추상 경로 이름으로 명명 된 디렉터리를 만듭니다. 이 작업이 실패하면 필요한 상위 디렉터리 중 일부를 만드는 데 성공했을 수 있습니다.

대한 javadocsmkdir() :

이 추상 경로 이름으로 명명 된 디렉터리를 만듭니다.

예:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

false첫 번째 는 양보 하고 [디렉터리가 생성되지 않음], true두 번째는 생성됩니다.non_existing_dir/someDir


7
: 오라클은 다시 인터넷에서 링크 파괴되기 때문에 mkdirs ()MKDIR ()
MyPasswordIsLasercats

@MyPasswordIsLasercats 알려 주셔서 감사합니다. 결정된.
amit

1
디렉토리가 이미 존재하는 경우 mkdir()반환 true또는 false? javadoc은이 측면을 다루지 않는 것 같습니다.
Arun

@Arun은 Javadoc에 따르면 "디렉토리가 생성 된 경우에만 true"를 반환하며,이 호출에 의해 생성되었는지 또는 이전에 생성되었는지에 대해 모호하다고 생각합니다. 이 대답 은 전자를 암시합니다.
Samuel Edwin Ward

mkdir과 ​​mkdirs는 제 경우에는 모두 false를 반환합니다. -.-. 이중 백 슬래시 "\\"를 사용하면 작동하지만 ".toURI ()"를 수행하면 다음을 수신합니다. file : / Users / MyName / Desktop / % 5Cnon_existing_dir % 5CsomeDir / 및 ".getPath () ""\ non_existing_dir \ someDir "을 수신하고".getCanonicalPath () "를 수행하면 / Users / MyName / Desktop / \ non_existing_dir \ someDir
Aerox

62

mkdirs()전체적으로 지정된 디렉토리 경로를 mkdir()생성하며, 생성하려는 디렉토리의 상위 디렉토리를 찾을 수 없으면 실패합니다.

mkdir()처럼 mkdirmkdirs()같다 mkdir -p.

예를 들어, 빈 /tmp디렉토리 가 있다고 가정 해보십시오 . 다음 코드

new File("/tmp/one/two/three").mkdirs();

다음 디렉토리를 생성합니다.

  • /tmp/one
  • /tmp/one/two
  • /tmp/one/two/three

이 코드 :

new File("/tmp/one/two/three").mkdir();

그것을 찾을 수없는 것처럼 - 어떤 디렉토리를 생성 할 것이다 /tmp/one/two- 그리고 반환합니다 false.


4
mkdir()

상위 디렉토리 인 경우 한 번에 하나의 디렉토리 만 만듭니다. 그렇지 않으면 하위 디렉토리를 생성 할 수 있으며 (지정된 경로가 존재하는 경우에만) 두 디렉토리 사이에 디렉토리를 생성하지 않습니다. 따라서 하나의 디렉토리에 여러 디렉토리를 만들 수 없습니다.

mkdirs()

한 번에 여러 디렉터리 (두 디렉터리 사이에도)를 만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.