Trong ví dụ này, chúng ta sẽ học cách lấy đường dẫn tương đối từ hai đường dẫn tuyệt đối trong Java bằng cách sử dụng các phương thức String, lớp URI và gói java.nio.file.
Ví dụ 1: Lấy một đường dẫn tương đối từ hai đường dẫn tuyệt đối bằng cách sử dụng lớp URI
import java.io.File; import java.net.URI; class Main ( public static void main(String() args) ( try ( // Two absolute paths File absolutePath1 = new File("C:\Users\Desktop\Programiz\Java\Time.java"); System.out.println("Absolute Path1: " + absolutePath1); File absolutePath2 = new File("C:\Users\Desktop"); System.out.println("Absolute Path2: " + absolutePath2); // convert the absolute path to URI URI path1 = absolutePath1.toURI(); URI path2 = absolutePath2.toURI(); // create a relative path from the two paths URI relativePath = path2.relativize(path1); // convert the URI to string String path = relativePath.getPath(); System.out.println("Relative Path: " + path); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Đầu ra
Đường dẫn tuyệt đối1: C: Users Desktop Programiz Java Time.java Đường dẫn tuyệt đối2: C: Users Desktop Đường dẫn tương đối: Programiz / Java / Time.java
Trong ví dụ trên, chúng ta có hai đường dẫn tuyệt đối được đặt tên là tuyệt đối hóa1 và đường dẫn tuyệt đối2. Chúng tôi đã sử dụng lớp URI để chuyển đổi các đường dẫn tuyệt đối thành đường dẫn tương đối.
- toURI () - chuyển đổi
File
đối tượng thành Uri - relativize () - trích xuất đường dẫn tương đối bằng cách so sánh hai đường dẫn tuyệt đối với nhau
- getPath () - chuyển đổi Uri thành một chuỗi
Đề xuất đọc :
- Tệp Java
- Lớp URI của Java
Ví dụ 2: Lấy một đường dẫn tương đối từ hai đường dẫn tuyệt đối bằng cách sử dụng các phương thức Chuỗi
import java.io.File; class Main ( public static void main(String() args) ( // Create file objects File file1 = new File("C:\Users\Desktop\Programiz\Java\Time.java"); File file2 = new File("C:\Users\Desktop"); // convert file objects to string String absolutePath1 = file1.toString(); System.out.println("Absolute Path1: " + absolutePath1); String absolutePath2 = file2.toString(); System.out.println("Absolute Path2: " + absolutePath2); // get the relative path String relativePath = absolutePath1.substring(absolutePath2.length()); System.out.println("Absolute Path: " + relativePath); ) )
Đầu ra
Đường dẫn tuyệt đối1: C: Users Desktop Programiz Java Time.java Đường dẫn tuyệt đối2: C: Users Desktop Đường dẫn tuyệt đối: Programiz Java Time.java
Trong ví dụ trên, chúng tôi đã chuyển đổi đường dẫn tệp thành chuỗi. Chú ý biểu thức,
absolutePath1.substring(absolutePath2.length())
Ở đây, substring()
phương thức trả về một phần của đường dẫn tuyệt đối bắt đầu từ chỉ mục bằng độ dài của đường dẫn tuyệt đối2. Nghĩa là, chuỗi được biểu diễn bởi AbsolPath2 sẽ bị loại bỏ khỏi AbsolPath1.
Để tìm hiểu thêm về cách hoạt động của chuỗi con, hãy truy cập Java String substring ().
Ví dụ 3: Lấy một đường dẫn tương đối từ hai đường dẫn tuyệt đối bằng cách sử dụng gói java.nio.file
import java.nio.file.Path; import java.nio.file.Paths; class Main ( public static void main(String() args) ( // Create file objects Path absolutePath1 = Paths.get("C:\Users\Desktop\Programiz\Java\Time.java"); Path absolutePath2 = Paths.get("C:\Users\Desktop"); // convert the absolute path to relative path Path relativePath = absolutePath2.relativize(absolutePath1); System.out.println("Relative Path: " + relativePath); ) )
Đầu ra
Relative Path: ProgramizJavaTime.java
Trong ví dụ trên, chúng ta đã sử dụng relativize()
phương thức của Path
interface để lấy một đường dẫn tương đối từ hai đường dẫn tuyệt đối.
Bài đọc được đề xuất :
- Lớp Java Paths
- Giao diện đường dẫn Java