ดูเหมือนว่าจะมีสามวิธีที่เหมือนกันในการรับ "ตัวคั่นไฟล์" ที่ขึ้นกับแพลตฟอร์มโดยไม่ขึ้นกับแพลตฟอร์ม:
เราจะตัดสินใจได้อย่างไรว่าจะใช้อันไหน?
มีความแตกต่างระหว่างพวกเขาหรือไม่?
ดูเหมือนว่าจะมีสามวิธีที่เหมือนกันในการรับ "ตัวคั่นไฟล์" ที่ขึ้นกับแพลตฟอร์มโดยไม่ขึ้นกับแพลตฟอร์ม:
เราจะตัดสินใจได้อย่างไรว่าจะใช้อันไหน?
มีความแตกต่างระหว่างพวกเขาหรือไม่?
คำตอบ:
System.getProperties()
สามารถแทนที่ได้โดยการเรียกSystem.setProperty(String key, String value)
หรือด้วยพารามิเตอร์บรรทัดคำสั่ง-Dfile.separator=/
File.separator
รับตัวคั่นสำหรับระบบไฟล์ดีฟอลต์
FileSystems.getDefault()
ทำให้คุณได้รับระบบไฟล์เริ่มต้น
FileSystem.getSeparator()
ทำให้คุณได้รับอักขระตัวคั่นสำหรับระบบไฟล์ โปรดทราบว่าเป็นวิธีการอินสแตนซ์คุณสามารถใช้วิธีนี้เพื่อส่งผ่านระบบไฟล์ต่างๆไปยังโค้ดของคุณนอกเหนือจากค่าดีฟอลต์ในกรณีที่คุณต้องการให้โค้ดของคุณทำงานบนระบบไฟล์หลายระบบใน JVM เดียว
FileSystem
อินสแตนซ์ที่แตกต่างกันสำหรับแต่ละระบบไฟล์ที่คุณจัดการ
java.io.File.separator
หากรหัสของคุณไม่ขอบเขตระบบแฟ้มไม่ข้ามคือคุณเพียงแค่การทำงานร่วมกับระบบแฟ้มหนึ่งใช้แล้ว
ตามที่อธิบายไว้จะทำให้คุณได้ตัวคั่นเริ่มต้นสำหรับ FS ของคุณ ดังที่ Bringer128 อธิบายไว้System.getProperty("file.separator")
สามารถลบล้างได้ผ่านทางตัวเลือกบรรทัดคำสั่งและไม่ปลอดภัยเท่ากับjava.io.File.separator
ไฟล์.
อันสุดท้ายjava.nio.file.FileSystems.getDefault().getSeparator();
เปิดตัวใน Java 7 ดังนั้นคุณอาจเพิกเฉยในตอนนี้หากคุณต้องการให้โค้ดของคุณพกพาได้ในเวอร์ชัน Java ที่เก่ากว่า
ดังนั้นทุกตัวเลือกเหล่านี้เกือบจะเหมือนกับตัวเลือกอื่น ๆ แต่ก็ไม่มากนัก เลือกสิ่งที่เหมาะกับความต้องการของคุณ
java.io
เลิกในความโปรดปรานของjava.nio
?
java.io
เป็นระดับที่ต่ำกว่าเล็กน้อยjava.nio
แต่ก็ยังมีประโยชน์มากและกว้างขวาง คุณสามารถเห็นความแตกต่างที่นี่: blogs.oracle.com/slc/entry/javanio_vs_javaio nio
ไม่ได้เปลี่ยนio
มันขยายได้หลายวิธี (และใช้io
ใต้ฝากระโปรง)