Dường như có ba cách giống nhau để độc lập nền tảng "phân tách tệp" phụ thuộc vào nền tảng:
Làm thế nào để chúng ta quyết định khi sử dụng mà?
Có sự khác biệt nào giữa chúng không?
Dường như có ba cách giống nhau để độc lập nền tảng "phân tách tệp" phụ thuộc vào nền tảng:
Làm thế nào để chúng ta quyết định khi sử dụng mà?
Có sự khác biệt nào giữa chúng không?
Câu trả lời:
System.getProperties()
có thể bị ghi đè bởi các cuộc gọi đến System.setProperty(String key, String value)
hoặc với các tham số dòng lệnh-Dfile.separator=/
File.separator
được phân tách cho hệ thống tập tin mặc định.
FileSystems.getDefault()
giúp bạn có hệ thống tập tin mặc định.
FileSystem.getSeparator()
giúp bạn có ký tự phân cách cho hệ thống tập tin. Lưu ý rằng là một phương thức cá thể, bạn có thể sử dụng phương thức này để chuyển các hệ thống tệp khác nhau sang mã của bạn ngoài mã mặc định, trong trường hợp bạn cần mã của mình để hoạt động trên nhiều hệ thống tệp trong một JVM.
FileSystem
cho mỗi hệ thống tệp bạn xử lý.
Nếu mã của bạn không vượt qua ranh giới hệ thống tệp, tức là bạn chỉ làm việc với một hệ thống tệp, sau đó sử dụng java.io.File.separator
.
Điều này sẽ, như đã giải thích, giúp bạn có dấu phân tách mặc định cho FS của bạn. Như Bringer128 đã giải thích,System.getProperty("file.separator")
có thể được ghi đè thông qua các tùy chọn dòng lệnh và không phải là loại an toàn như java.io.File.separator
.
Cái cuối cùng, java.nio.file.FileSystems.getDefault().getSeparator();
được giới thiệu trong Java 7, vì vậy bây giờ bạn có thể bỏ qua nó nếu bạn muốn mã của mình có thể di động trên các phiên bản Java cũ hơn.
Vì vậy, mỗi một trong số các tùy chọn này gần giống như các tùy chọn khác, nhưng không hoàn toàn. Chọn một trong những phù hợp với nhu cầu của bạn.
java.io
phản đối ủng hộ java.nio
?
java.io
là một mức độ thấp hơn một chút java.nio
, nhưng vẫn rất hữu ích và rộng rãi. Bạn có thể thấy sự khác biệt ở đây: blog.oracle.com/slc/entry/javanio_vs_javaio . nio
không thay thế io
, nó mở rộng nó theo nhiều cách (và sử dụng io
dưới mui xe).