Trong File
lớp có hai chuỗi, separator
và pathSeparator
.
Có gì khác biệt? Khi nào tôi nên sử dụng cái này hơn cái kia?
Trong File
lớp có hai chuỗi, separator
và pathSeparator
.
Có gì khác biệt? Khi nào tôi nên sử dụng cái này hơn cái kia?
Câu trả lời:
Nếu bạn có ý File.separator
và File.pathSeparator
sau đó:
File.pathSeparator
được sử dụng để phân tách các đường dẫn tệp riêng lẻ trong một danh sách các đường dẫn tệp. Xem xét trên các cửa sổ, biến môi trường PATH. Bạn sử dụng một ;
để tách các đường dẫn tập tin để trên Windows File.pathSeparator
sẽ ;
.
File.separator
là /
hoặc \
được sử dụng để phân chia đường dẫn đến một tệp cụ thể. Ví dụ trên Windows, nó là \
hoặcC:\Documents\Test
File.separator
nên File.fileSeparator
liên quan đếnFile.pathSeparator
File
. Tôi nghĩ rằng phần tập tin được ngụ ý. Nhưng ai biết tại sao họ đã làm rất nhiều những gì họ đã làm với Java.
Bạn sử dụng dấu phân cách khi bạn đang xây dựng đường dẫn tệp. Vì vậy, trong unix phân cách là /
. Vì vậy, nếu bạn muốn xây dựng đường dẫn unix, /var/temp
bạn sẽ làm như thế này:
String path = File.separator + "var"+ File.separator + "temp"
Bạn sử dụng pathSeparator
khi bạn đang xử lý một danh sách các tệp như trong đường dẫn lớp. Ví dụ: nếu ứng dụng của bạn lấy danh sách các lọ làm đối số thì cách tiêu chuẩn để định dạng danh sách đó trên unix là:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Vì vậy, đưa ra một danh sách các tập tin bạn sẽ làm một cái gì đó như thế này:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
thì sẽ vô dụng File.separator
khi bạn sử dụng mã phụ thuộc vào nền tảng. Cũng có thể hardcode đường dẫn.
java.io.File
lớp chứa bốn biến phân tách tĩnh. Để hiểu rõ hơn, chúng ta hãy hiểu với sự giúp đỡ của một số mã
Lưu ý rằng tất cả những điều này là các biến cuối cùng và phụ thuộc hệ thống.
Đây là chương trình java để in các biến phân cách này. FileSpayator.java
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
Đầu ra của chương trình trên trên hệ thống Unix:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Đầu ra của chương trình trên hệ thống Windows:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Để làm cho nền tảng chương trình của chúng tôi độc lập, chúng ta nên luôn luôn sử dụng các dấu phân cách này để tạo đường dẫn tệp hoặc đọc bất kỳ biến hệ thống nào như PATH, CLASSPATH.
Đây là đoạn mã chỉ ra cách sử dụng dấu phân cách chính xác.
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
String
và char
các phương thức được trả lại ở trên trả về dấu gạch chéo ngược được định dạng đúng (nếu trên Windows).