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.
FileSystemcontoh 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.iousang demi java.nio?
java.ioadalah 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 . niotidak menggantikan io, ia memperpanjangnya dengan berbagai cara (dan digunakan di iobawah kap).