2013-07-29 22 views
6

Tôi gặp sự cố khi tạo liên kết tượng trưng cho một thư mục trong Java. Tôi đang sử dụng phương pháp createSymbolicLink() từ lớp Files: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.htmlTạo liên kết tượng trưng với Java

đường dẫn tuyệt đối:

  • Target: /some/path/target
  • Link: /some/path/xxx/linkname

Tôi hy vọng rằng một liên kết trong thư mục /some/path/xxx/ được tạo vào thư mục /some/path/target, nhưng thay vào đó, liên kết từ /some/path/xxx/linkname đến /some/path/xxx/target được tạo. Tôi không thể hiểu được tôi đang làm gì sai.

Khi tôi tạo liên kết từ /some/path/linkname đến /some/path/target, mọi thứ hoạt động như mong đợi.

Bất kỳ trợ giúp nào được đánh giá cao.

EDIT: Dưới đây là mã của tôi:

Path records = Paths.get(Properties.getProperty("records.path")); 
Path recordsLink = Paths.get(Properties.getProperty("webserver.root") + System.getProperty("file.separator") + records.getFileName()); 
try { 
    Files.createSymbolicLink(recordsLink, records); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Các "records.path" và "webserver.root" đều đường dẫn tương đối.

Thật sự tôi chỉ tìm thấy một giải pháp cho vấn đề: Nó hoạt động nếu tôi làm điều này:

records = records.toAbsolutePath(); 

tôi cho rằng các createSymbolicLink() sẽ sử dụng đường dẫn tuyệt đối để tạo ra các liên kết, đó là sai.

+1

Bạn có thể đăng mã của mình không? –

+1

Tôi tìm thấy một giải pháp. Xem bài đăng đã chỉnh sửa. – omnibrain

+2

Vui lòng không chỉnh sửa câu hỏi để đặt câu trả lời ở đó. Ngay cả khi bạn tìm thấy câu trả lời cho câu hỏi của mình, hãy đặt câu trả lời đúng. –

Trả lời

6

tôi tìm thấy giải pháp cho vấn đề này: Nó hoạt động nếu tôi làm điều này:

records = records.toAbsolutePath(); 

tôi cho rằng createSymbolicLink() sẽ sử dụng đường dẫn tuyệt đối để tạo ra các liên kết, đó là sai.

+2

Không chắc chắn lý do bạn chuyển đổi từ đường dẫn thành chuỗi thành đường dẫn - 'records = records.toAbsolutePath()' là tương đương. – Max