Java.io için java'da mkdir () ve mkdirs () arasındaki fark. Dosya [kapalı]


123

Biri bana bu iki yöntem arasındaki farkı söyleyebilir mi:

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

23

2
Bunu yapmak için yeni bir yol Files.createDirectories ve Files.createDirectory statik yöntemleri kullanarak geçerli: docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
neves

Mkdir'i kullandıktan sonra "Dosya desteklenmiyor" mesajı alabilirsiniz.
user7856586

İkisi arasında herhangi bir performans farkı var mı? Özellikle üst dizinler zaten mevcutsa?
Joshua Pinter

Yanıtlar:


158

mkdirs()ayrıca bu yolda üst dizinler oluştururFile temsil .

javadocs için mkdirs():

Gerekli olan ancak var olmayan ana dizinler dahil olmak üzere bu soyut yol adıyla adlandırılan dizini oluşturur. Bu işlem başarısız olursa, gerekli üst dizinlerden bazılarını oluşturmayı başarmış olabileceğini unutmayın.

javadocs için mkdir():

Bu soyut yol adıyla adlandırılan dizini oluşturur.

Misal:

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

verecektir falseilk için [ve hiçbir dir oluşturulacak] ve truesaniye ve oluşturduğunuz olacaknon_existing_dir/someDir


7
: Oracle yine internet bağlantıları kırma Çünkü mkdirs () ve mkdir ()
MyPasswordIsLasercats

@MyPasswordIsLasercats Bana bildirdiğiniz için teşekkür ederim. sabit.
amit

1
Dizin zaten varsa, yok mkdir()iade trueveya false? Javadoc bu yönü kapsamıyor gibi görünüyor.
Arun

@Arun, Javadoc'a göre, bu çağrı tarafından mı yoksa daha önce mi oluşturulduğu konusunda belirsiz olduğunu düşündüğüm "ancak ve ancak dizin oluşturulmuşsa doğru" döndürür. Bu cevap birincisini akla getiriyor.
Samuel Edwin Ward

mkdir ve mkdirs, benim durumumda -.- hem yanlış döndürür. Çift ters eğik çizgi kullanırsam çalışır "\\" AMA: eğer ".toURI ()" kullanırsam şunu alırsam: file: / Kullanıcılar / MyName / Desktop /% 5Cnon_existing_dir% 5CsomeDir / ve eğer ".getPath () "\ non_existing_dir \ someDir" alıyorum ve ".getCanonicalPath ()" alırsam / Users / MyName / Desktop / \ non_existing_dir \ someDir
Aerox

62

mkdirs()mkdir()yalnızca en alttaki dizini oluşturacak olan, oluşturmaya çalıştığı dizinin üst dizinini bulamazsa başarısız olan, belirtilen dizin yolunu bütünüyle oluşturacaktır.

Başka bir deyişle mkdir(), gibidir mkdirve mkdirs()gibidir mkdir -p.

Örneğin, boş bir /tmpdizininiz olduğunu düşünün . Aşağıdaki kod

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

aşağıdaki dizinleri oluşturur:

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

Bu kod nerede:

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

bulamayacağı gibi herhangi bir dizin yaratmaz /tmp/one/twove geri döner false.


4
mkdir()

sadece bir üst dizin ise, bir seferde yalnızca bir dizin oluşturur. başka bir şekilde alt dizini oluşturabilir (yalnızca belirtilen yol varsa) ve herhangi iki dizin arasında herhangi bir dizin oluşturmaz. bu nedenle tek bir dizinde birden fazla dizin oluşturamaz

mkdirs()

aynı anda birden çok dizini (iki dizin arasında da) oluşturun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.