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?
java
platform-independent
Pacerier
sumber
sumber
Jawaban:
System.getProperties()
dapat diganti dengan panggilan keSystem.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.sumber
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 seamanjava.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.
sumber
java.io
usang demijava.nio
?java.io
adalah tingkat yang sedikit lebih rendah daripadajava.nio
, tetapi masih sangat berguna dan luas. Anda dapat melihat perbedaannya di sini: blogs.oracle.com/slc/entry/javanio_vs_javaio .nio
tidak menggantikanio
, ia memperpanjangnya dengan berbagai cara (dan digunakan diio
bawah kap).