Tampaknya ada tiga cara yang identik untuk mendapatkan "pemisah file" yang bergantung pada platform secara independen platform:
Bagaimana kami memutuskan kapan akan menggunakan yang mana?
Apakah ada perbedaan di antara mereka?
Tampaknya ada tiga cara yang identik untuk mendapatkan "pemisah file" yang bergantung pada platform secara independen platform:
Bagaimana kami memutuskan kapan akan menggunakan yang mana?
Apakah ada perbedaan di antara mereka?
Jawaban:
System.getProperties()
dapat diganti dengan panggilan ke System.setProperty(String key, String value)
atau dengan parameter baris perintah-Dfile.separator=/
File.separator
mendapatkan pemisah untuk sistem file default.
FileSystems.getDefault()
memberi Anda sistem file default.
FileSystem.getSeparator()
memberi Anda karakter pemisah untuk sistem file. Perhatikan bahwa sebagai metode instance, Anda dapat menggunakan ini untuk meneruskan sistem file yang berbeda ke kode Anda selain dari default, dalam kasus di mana Anda memerlukan kode Anda untuk beroperasi pada beberapa sistem file dalam satu JVM.
FileSystem
contoh yang berbeda untuk setiap sistem file yang Anda tangani.
Jika kode Anda tidak melewati batas sistem file, misalnya Anda hanya bekerja dengan satu sistem file, gunakan java.io.File.separator
.
Ini akan, seperti yang dijelaskan, memberi Anda pemisah default untuk FS Anda. Seperti yang dijelaskan oleh Bringer128, System.getProperty("file.separator")
dapat diganti melalui opsi baris perintah dan tidak seaman java.io.File.separator
.
Yang terakhir, java.nio.file.FileSystems.getDefault().getSeparator();
diperkenalkan di Java 7, jadi sebaiknya Anda mengabaikannya sekarang jika ingin kode Anda portabel di versi Java yang lebih lama.
Jadi, setiap opsi ini hampir sama dengan yang lain, tetapi tidak sepenuhnya. Pilih salah satu yang sesuai dengan kebutuhan Anda.
java.io
usang demi java.nio
?
java.io
adalah tingkat yang sedikit lebih rendah daripada java.nio
, tetapi masih sangat berguna dan luas. Anda dapat melihat perbedaannya di sini: blogs.oracle.com/slc/entry/javanio_vs_javaio . nio
tidak menggantikan io
, ia memperpanjangnya dengan berbagai cara (dan digunakan di io
bawah kap).