ใครช่วยบอกฉันถึงความแตกต่างระหว่างสองวิธีนี้:
file.mkdir()
file.mkdirs()
ใครช่วยบอกฉันถึงความแตกต่างระหว่างสองวิธีนี้:
file.mkdir()
file.mkdirs()
คำตอบ:
mkdirs()
ยังสร้างไดเร็กทอรีพาเรนต์ในพา ธ ที่File
แสดงถึง
javadocsสำหรับmkdirs()
:
สร้างไดเร็กทอรีที่ตั้งชื่อตามชื่อพา ธ นามธรรมนี้รวมถึงไดเร็กทอรีพาเรนต์ที่จำเป็น แต่ไม่มีอยู่ โปรดสังเกตว่าหากการดำเนินการนี้ล้มเหลวอาจประสบความสำเร็จในการสร้างไดเร็กทอรีหลักที่จำเป็นบางอย่าง
javadocsสำหรับmkdir()
:
สร้างไดเร็กทอรีที่ตั้งชื่อตามชื่อพา ธ นามธรรมนี้
ตัวอย่าง:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
จะให้ผลfalse
เป็นครั้งแรก [และจะไม่มีการสร้างผบ.] และtrue
สำหรับครั้งที่สองและคุณจะได้สร้างnon_existing_dir/someDir
mkdir()
ส่งคืนtrue
หรือfalse
? ดูเหมือนว่า javadoc จะไม่ครอบคลุมด้านนี้
mkdirs()
จะสร้างพา ธ ไดเร็กทอรีที่ระบุอย่างครบถ้วนซึ่งmkdir()
จะสร้างไดเร็กทอรีล่างสุดเท่านั้นซึ่งจะล้มเหลวหากไม่พบไดเร็กทอรีหลักของไดเร็กทอรีที่พยายามสร้าง
ในคำอื่น ๆmkdir()
เป็นเหมือนmkdir
และเป็นเหมือนmkdirs()
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
และจะกลับมา
mkdir()
สร้างไดเร็กทอรีเพียงครั้งละหนึ่งไดเร็กทอรีหากเป็นพาเรนต์ที่มีเพียงไดเร็กทอรีเดียว นอกจากนี้ยังสามารถสร้างไดเร็กทอรีย่อยได้ (หากมีพา ธ ที่ระบุเท่านั้น) และอย่าสร้างไดเร็กทอรีใด ๆ ระหว่างสองไดเร็กทอรีใด ๆ ดังนั้นจึงไม่สามารถสร้างไดเร็กทอรี smultiple ในไดเร็กทอรีเดียว
mkdirs()
สร้างไดเร็กทอรีหลายไดเร็กทอรี (ในระหว่างสองไดเร็กทอรีด้วย) พร้อมกัน