ใครช่วยบอกฉันถึงความแตกต่างระหว่างสองวิธีนี้:
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()
สร้างไดเร็กทอรีหลายไดเร็กทอรี (ในระหว่างสองไดเร็กทอรีด้วย) พร้อมกัน