2012-08-23 44 views
48

Đó là một câu hỏi lý thuyết. Tôi đã tìm kiếm trên internet mà không có may mắn, tôi chỉ muốn hiểu thuật ngữ này là gì. Tôi đã nhìn thấy các ví dụ về Java, JSON, v.v. nhưng tôi không thể tìm thấy trong Google hay ở đây trong StackOverflow một lời giải thích đơn giản, không cần mã nào = P"Đường dẫn chuẩn" là gì?

Vì vậy, một đường dẫn tuyệt đối là một cách để truy cập vào một tệp nhất định hoặc vị trí mô tả tuyến đường đầy đủ, đường dẫn đầy đủ và phụ thuộc hệ điều hành (đường dẫn tuyệt đối cho Windows và Linux chẳng hạn) khác nhau. Đường dẫn tương đối là đường dẫn đến tệp hoặc vị trí được mô tả từ vị trí hiện tại. (hai dấu chấm) biểu thị cấp trên trong cây thư mục. Điều đó đã được rõ ràng với tôi trong nhiều năm nay.

Khi tìm kiếm tôi thậm chí còn thấy có các tệp đã được chuẩn hóa! Tất cả những gì tôi biết là CANONICAL có nghĩa là một cái gì đó như "theo các quy tắc" hoặc một cái gì đó.

Ai đó có thể vui lòng khai sáng cho tôi bằng các lý thuyết về công cụ kinh điển không? =) CẢM ƠN !!

PD (Vì vậy, nó không chỉ là một tên ngẫu nhiên Ubuntu sau khi tất cả) XD

PD2 Đáng buồn là tôi không thể đưa ra câu trả lời cho tất cả mọi người, tôi đưa nó cho một trong đó đã giúp tôi nhất hiểu được những khái niệm, nhưng cảm ơn tất cả mọi người =)

+5

Bởi "SO" bạn có nghĩa là "OS" không? Bạn có phải là người Pháp không? –

+0

"Système d'exploitation" có tôi biết tiếng Pháp nhưng tôi có nghĩa là hệ điều hành (tôi sai chính tả xin lỗi hehe) Hệ điều hành ... Tôi là người Mexico trên thực tế xD – Metafaniel

+4

Ahh, "Sistema de la operación, ¡olé!" (Và đó là "Hệ điều hành"), theo cách này.) –

Trả lời

62

Toàn bộ điểm làm mọi thứ "kinh điển" là để bạn có thể so sánh hai thứ. Ví dụ: cả hai số ../../here/bar/x./test/../../bar/x có thể chỉ đến cùng một vị trí, nhưng bạn không thể so sánh văn bản trên hai đường dẫn. Tuy nhiên, nếu bạn biến chúng thành biểu diễn kinh điển của chúng, chúng đều trở thành ../bar/x và chúng ta thấy rằng chúng thực sự là cùng một thứ.

Nói tóm lại, nó thường là trường hợp mà bạn có nhiều cách để đề cập đến một điều, và trong trường hợp đó bạn có thể xác định một đại diện kinh điển đó là độc đáo và cho phép bạn để có được một xử lý trên col ­ phần của những thứ như vậy.

(Nếu bạn đang tìm kiếm nhiều ví dụ hơn, tất cả toán học có đầy đủ các công trình "chuẩn" cho tất cả các loại đối tượng và rất nhiều mục đích tương tự trong đầu. Có thể điều này Wikipedia article có thể cung cấp một số hướng dẫn theo định hướng quảng cáo ­ .)

+1

Oooh tôi thấy bây giờ ... Vì vậy, trong ngắn hạn kinh điển phải là duy nhất vì vậy đó là con đường rất đầy đủ mà không sử dụng tương đối hai chấm. Ohhh! Câu trả lời của bạn là hữu ích;) Cảm ơn – Metafaniel

+0

@Metafaniel: Vâng, phần quan trọng là tính duy nhất. Tôi đoán bạn có thể có cả một người họ hàng kinh điển và một con đường tuyệt đối kinh điển, nhưng đó là một sự phân biệt độc lập. –

+0

Tất cả đều tốt và đúng cho đến khi nhận xét đó xD OK Tôi đã hiểu, nhưng ... một đường dẫn tương đối chuẩn? Như tôi đã hiểu cho đến bây giờ (cảm ơn tất cả mọi người) các con đường kinh điển là tuyệt đối bởi thiên nhiên. Những gì bạn có thể cho tôi biết về các đường dẫn tương đối kinh điển? = S THANKS =) – Metafaniel

9

Cách tốt để xác định đường dẫn chuẩn sẽ là: the shortest absolute path (viết tắt, theo nghĩa là độ dài chuỗi).

Đây là một ví dụ về sự khác biệt giữa một đường dẫn tuyệt đối và một con đường kinh điển:

đường dẫn tuyệt đối: C:\abc\..\abc\file.txt
con đường kinh điển: C:\abc\file.txt

+0

Theo @KerrekSB đường dẫn phải là duy nhất để được kinh điển, vì vậy trong ví dụ của bạn tôi có thể nhìn thấy nó: không có cách nào khác để đại diện cho C: \ abc \ file.txt Cảm ơn ví dụ =) – Metafaniel

+0

Có, bạn có thể xác định 'đường dẫn chuẩn' là đường dẫn tuyệt đối ngắn nhất (ngắn, theo nghĩa là chiều dài chuỗi). Tôi sẽ thêm nó vào câu trả lời của tôi. – alfasin

+0

Ah OK OK, cảm ơn, nó rõ ràng hơn bây giờ;) – Metafaniel

6

Thật là một con đường kinh điển là (hoặc sự khác biệt của nó từ một tuyệt đối đường dẫn) phụ thuộc vào hệ thống.
Thông thường nếu đường dẫn (đầy đủ) chứa bí danh, lối tắt hoặc liên kết tượng trưng, ​​đường dẫn kinh điển sẽ giải quyết tất cả các đường dẫn này vào các thư mục thực tế mà chúng tham chiếu.
Ví dụ: nếu /bin/a là liên kết sym, bạn có thể tìm thấy nó ở bất cứ nơi nào bạn yêu cầu cho đường dẫn tuyệt đối, ví dụ: từ java.io.File#getAbsolutePath trong khi tệp thực (tức là mục tiêu thực sự của liên kết) tức là usr/local/bin/a sẽ được trả lại dưới dạng đường dẫn chuẩn, ví dụ:từ java.io.File#getCanonicalPath

+0

Khá hữu ích bình luận của bạn cho tôi để hiểu quá! Tôi chưa từng nghĩ đến các liên kết sym ngay bây giờ! Vì vậy, một liên kết sym nó tuyệt đối NHƯNG không kinh điển ... Rất toàn diện. BAO GIỜ tôi đã có một nghi ngờ mới ... Điều gì về liên kết cứng? Họ không đủ tuyệt đối sao? THANKS – Metafaniel

+0

Depends.For example java.io.File # getCanonicalPath không giải quyết các liên kết cứng – Cratylus

+0

Tôi chưa phát triển quá nhiều trong Java, tôi chủ yếu là một anh chàng PHP;) Cảm ơn bạn đã làm rõ =) – Metafaniel

1

Sự cố nhất với đường dẫn kinh điển xảy ra khi bạn chuyển tên của thư mục và không phải tệp. Đối với tập tin, nếu chúng ta đang cung cấp đường dẫn tuyệt đối cũng là đường dẫn kinh điển. Nhưng đối với dir nó có nghĩa là bỏ qua "/" cuối cùng. Ví dụ, "/ var/tmp/foo" là một đường dẫn kinh điển trong khi "/ var/tmp/foo /" thì không.

Các vấn đề liên quan