Perbedaan antara mkdir () dan mkdirs () di java untuk java.io.File [ditutup]

123

Adakah yang bisa memberi tahu saya perbedaan antara kedua metode ini:

  • file.mkdir()
  • file.mkdirs()
Krishna Kankal
sumber
23
Baca javadoc: mkdir vs mkdirs
assylias
2
Cara yang lebih baru untuk melakukannya adalah menggunakan metode statis Files.createDirectories dan Files.createDirectory: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
neves
Anda bisa mendapatkan "File tidak didukung" setelah menggunakan mkdir.
pengguna7856586
Apakah ada perbedaan performa di antara keduanya? Apalagi kalau direktori induknya sudah ada?
Joshua Pinter

Jawaban:

158

mkdirs()juga membuat direktori induk di jalur yang Filediwakilinya.

javadocs untuk mkdirs():

Membuat direktori yang dinamai dengan nama jalur abstrak ini, termasuk semua direktori induk yang diperlukan tetapi tidak ada. Perhatikan bahwa jika operasi ini gagal, mungkin telah berhasil membuat beberapa direktori induk yang diperlukan.

javadocs untuk mkdir():

Membuat direktori yang dinamai dengan nama jalur abstrak ini.

Contoh:

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

akan menghasilkan falseuntuk yang pertama [dan dir tidak akan dibuat], dan trueuntuk yang kedua, dan Anda akan membuatnyanon_existing_dir/someDir

amit
sumber
7
Karena oracle memutus tautan di internet lagi: mkdirs () dan mkdir ()
MyPasswordIsLasercats
@MyPasswordIsLasercats Terima kasih telah memberi tahu saya. tetap.
amit
1
Jika direktori sudah ada, apakah mkdir()kembali trueatau false? Javadoc tampaknya tidak mencakup aspek ini.
Arun
@Arun, menurut Javadoc itu mengembalikan "benar jika dan hanya jika direktori itu dibuat", yang saya kira tidak jelas, apakah itu dibuat oleh panggilan ini atau sebelumnya. Jawaban ini menyarankan yang pertama.
Samuel Edwin Ward
mkdir dan mkdirs mengembalikan keduanya salah dalam kasus saya -.-. Ini berfungsi jika saya menggunakan garis miring terbalik ganda "\\" TAPI: jika saya melakukan ".toURI ()" setelah itu saya menerima: file: / Users / MyName / Desktop /% 5Cnon_existing_dir% 5CsomeDir / dan jika saya lakukan ".getPath () "Saya menerima" \ non_existing_dir \ someDir "dan jika saya melakukannya" .getCanonicalPath () "saya menerima / Users / MyName / Desktop / \ non_existing_dir \ someDir
Aerox
62

mkdirs() akan membuat jalur direktori yang ditentukan secara keseluruhan di mana mkdir() hanya akan membuat direktori paling bawah, gagal jika tidak dapat menemukan direktori induk dari direktori yang coba dibuatnya.

Dengan kata lain mkdir()adalah seperti mkdirdan mkdirs()sepertimkdir -p .

Misalnya, bayangkan kita memiliki /tmpdirektori kosong . Kode berikut

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

akan membuat direktori berikut:

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

Dimana kode ini:

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

tidak akan membuat direktori apa pun - karena tidak akan ditemukan /tmp/one/two- dan akan kembali false.

Dave Webb
sumber
4
mkdir()

membuat hanya satu direktori dalam satu waktu, jika itu adalah induknya saja. Jika tidak, ia dapat membuat sub direktori (jika jalur yang ditentukan hanya ada) dan tidak membuat direktori apa pun di antara dua direktori. sehingga tidak dapat membuat beberapa direktori dalam satu direktori

mkdirs()

buat beberapa direktori (di antara dua direktori juga) pada satu waktu.

Durga Rao
sumber