java:path

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:path [2015/02/28 15:49]
elkarafe
java:path [2016/02/26 11:15] (current)
Line 1: Line 1:
 +====== H έννοια του μονοπατιού ======
  
-Η κλάση //Path//, η οποία εισήχθη στην έκδοση SE 7 της ​Java , είναι ένα από τα κύρια σημεία του //java.nio.file// πακέτου. ​Για όσους χρησιμοποιούν ​αρχείου ​είναι χρήσιμο να ξέρουν τα ισχυρά χαρακτηριστικά αυτής της κλάσης.+Ένα σύστημα αρχείων αποθηκεύει και οργανώνει αρχεία σε κάποια μορφή μέσωνκυρίως ένα ή περισσότερους σκληρούς δίσκους,​ κατά τέτοιο τρόπο ώστε να μπορούν ​εύκολα να ανακτηθούν. Τα περισσότερα συστήματα αρχείων που χρησιμοποιούνται σήμερα αποθηκεύουν τα αρχεία ​σε μία δομή δέντρου (ή ιεραρχική). Στην ​κορυφή του δέντρου είναι ένας (ή περισσότεροι) ​κόμβοι ρίζα. Κάτω από τον κόμβο ρίζα, υπάρχουν αρχεία και ​διευθύνσεις (φακέλοι στα Microsoft Windows). Κάθε διεύθυνση μπορεί να περιέχει αρχεία και υποδιευθύνσεις, οι οποίες με τη σειρά τους μπορεί να περιέχουν αρχεία και υποδιευθύνσεις,​ και ούτω καθεξής,​ ενδεχομένως σε σχεδόν απεριόριστο βάθος.  
 + 
 +==== Τι είναι το Μονοπάτι?​ ==== 
 + 
 +Η παρακάτω εικόνα δείχνει ένα δείγμα δέντρου διεύθυνσης που περιέχει ένα μόνο κόμβο. Το λειτουργικό ​σύστημα  Microsoft Windows υποστηρίζει πολλαπλούς κόμβους ρίζα. Κάθε κόμβος ρίζας αντιστοιχίζεται σε έναν τόμο, όπως C: \ ή D: \. Το Solaris ​υποστηρίζει ένα μόνο κόμβο ρίζα, ο οποίος συμβολίζεται με το χαρακτήρα καθέτου, ​/
 + 
 +{{ :java:​io-dirstructure.gif?250 |}} 
 + 
 +Ένα αρχείο προσδιορίζονται από το μονοπάτι του μέσα στο σύστημα αρχείων,​ ξεκινώντας από τον κόμβο της ρίζαςΓια παράδειγμα,​ το αρχείο ​//statusReport//​ στην ​παρπάνω εικόνα περιγράφεται από την ακόλουθη σημειογραφία στο λειτουργικό σύστημα Solaris: 
 + 
 +<code java> 
 +/​home/​sally/​statusReport 
 +</​code>​ 
 + 
 +Στα Microsoft Windows, το //​statusReport//​ περιγράφεται από την ακόλουθη σημειογραφία:​ 
 + 
 +<code java> 
 +C:​\home\sally\statusReport 
 +</​code>​ 
 + 
 +Ο χαρακτήρας που χρησιμοποιείται για να διαχωρίσει τα ονόματα των διευθύνσεων (γνωστό και ως διαχωριστικό) είναι συγκεκριμένο για το σύστημα αρχείων:​ Το λειτουργικό σύστημα Solaris χρησιμοποιεί την κάθετο (/), και το Microsoft Windows χρησιμοποιεί την backslash κάθετο (\). 
 + 
 +==== Σχετικό ή απόλυτο? ==== 
 + 
 +Ένα μονοπάτι είναι είτε ​σχετικό ή απόλυτο. Ένα απόλυτο μονοπάτι περιέχει πάντα το στοιχείο της ρίζας και την πλήρη λίστα διευθύνσεων που απαιτείται για να εντοπιστεί το αρχείο. Για παράδειγμα,​ το  
 +/ home / Sally / statusReport είναι μια απόλυτη διαδρομή.  
 +Όλες οι πληροφορίες που χρειάζονται για να εντοπιστεί το αρχείο περιέχονται στην συμβολοσειρά του μονοπατιού. 
 + 
 +Ένα σχετικό μονοπάτι πρέπει να συνδυαστεί με ένα άλλο μονοπάτι για να αποκτήσουμε πρόσβαση σε ένα αρχείο. Για παράδειγμα,​ το Joe / foo είναι ένα σχετικό μονοπάτι. Χωρίς περισσότερες πληροφορίες,​ ένα πρόγραμμα δεν μπορεί να εντοπίσει αξιόπιστα την διεύθυνση Joe foo στο σύστημα ​αρχείων. 
 + 
 +==== Symbolic Links ==== 
 + 
 +Τα αντικείμενα του συστήματος αρχείων ​είναι ​ως επί το πλείστον διευθύνσεις ή αρχεία. Όμως κάποια συστήματα αρχείων υποστηρίζουν επίσης την λογική των symbolic links. Το symbolic link μπορεί να αναφέρεται και ως symlink ή soft link. 
 + 
 +Ένα symbolic link είναι ένα ειδικό αρχείο που χρησιμεύει ως αναφορά σε ένα άλλο αρχείο. Γενικά,​ τα symbolic links είναι ανοιχτά για τις εφαρμογές,​ και οι εργασίες πάνω σε symbolic links μεταφέρονται αυτόματα στον προορισμό του συνδέσμου. Εξαιρέσεις αποτελούν όταν ένα symbolic link έχει διαγραφεί ή μετονομαστεί,​ οπότε διαγράφεται ή μετονομάζεται το ίδιο το link και όχι ο προορισμός του link. 
 + 
 +Στην παρακάτω εικόνα,​ το //logFile// φαίνεται ​να είναι ένα κανονικό αρχείο ​στο χρήστη, αλλά στην πραγματικότητα είναι ένα symbolic link στην διεύθυνση dir / logs / HomeLogFile. Το //​HomeLogFile//​ είναι ο προορισμός του link. 
 + 
 +{{ :​java:​io-symlink.gif?​400 |}} 
 + 
 +Ένα symbolic link είναι συνήθως διαφανές στο χρήστη. Η ανάγνωση ή η εγγραφή σε ένα symbolic link είναι το ίδιο με την ανάγνωση ή γραφή σε οποιοδήποτε άλλο αρχείο ή κατάλογο. 
 + 
 +Η φράση //​επίλυση ενός link// σημαίνει να υποκαταστήσει ​την πραγματική θέση ​στο σύστημα αρχείων για το symbolic link. Στο παράδειγμα,​ η επίλυση του //logFile// έχει σαν αποτέλεσμα το dir / logs / HomeLogFile. 
 + 
 +Στα real-world σενάρια,​ τα περισσότερα συστήματα αρχείων ​κάνουν φιλελεύθερη χρήση των symbolic links. Περιστασιακά, ένα απρόσεκτα δημιουργημένο symbolic link μπορεί να προκαλέσει μια κυκλική αναφορά. Μια κυκλική αναφορά εμφανίζεται όταν ο προορισμός ενός link οδηγεί πίσω στo αρχική link. Η κυκλική αναφορά μπορεί να είναι έμμεση:​ η διεύθυνση a δείχνει στην διεύθυνση b, η οποία παραπέμπει στην διεύθυνση c, η οποία περιέχει μια υποδιεύθυνση προς τα πίσω στην διεύθυνση α. Οι κυκλικές αναφορές μπορούν να προκαλέσουν τον όλεθρο,​ όταν ένα πρόγραμμα αναδρομικά ακολουθεί μια δομή διευθύνεων. Ωστόσο, το σενάριο αυτό ​ ελήφθη υπόψη στους και δεν θα προκαλέσει το πρόγραμμά σας σε βρόχο απείρως.
  
-Σημείωση Version : Αν έχετε ​ pre-JDK7 κώδικα που χρησιμοποιεί //​java.io.File//,​ μπορείτε να επωφεληθείτε από τη λειτουργικότητα της κλάσης //Path// χρησιμοποιώντας τη μέθοδο //​File.toPath//​ 
  
-[[μονοπάτι]] 
java/path.1425138576.txt.gz · Last modified: 2016/02/26 11:15 (external edit)