java:creating_and_reading_directories

Differences

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

Link to this comparison view

java:creating_and_reading_directories [2015/03/04 19:48]
gthanos [Δημιουργία μιας Διεύθυνσης]
java:creating_and_reading_directories [2016/02/26 11:15]
Line 1: Line 1:
-====== Δημιουργία και ανάγνωση Διευθύνσεων ====== 
  
-==== Καταχώρηση Root Διευθύνσεων ενός Συστήματος Αρχείων ==== 
- 
-Μπορούμε να καταγράψουμε όλες τις root διευθύνσεις ενός συστήματος αρχείων,​ χρησιμοποιώντας τη μέθοδο //​FileSystem.getRootDirectories//​. Αυτή η μέθοδος επιστρέφει ένα //​Iterable//,​ το οποίο μας επιτρέπει να χρησιμοποιήσουμε τον for βρόγχο για να επαναλάβουμε όλες τις root διευθύνσεις. 
- 
-Το ακόλουθο απόσπασμα κώδικα εκτυπώνει τις root διευθύνσεις για το προεπιλεγμένο σύστημα αρχείων:​ 
- 
-<code java> 
-Iterable<​Path>​ dirs = FileSystems.getDefault().getRootDirectories();​ 
-for (Path name: dirs) { 
-    System.err.println(name);​ 
-} 
-</​code>​ 
- 
-==== Δημιουργία μιας Διεύθυνσης ==== 
- 
-Μπορούμε να δημιουργήσουμε μια νέα διεύθυνση με τη χρήση της //​createDirectory (Path, FileAttribute <?>​)//​ μεθόδου. Αν δεν καθορίσουμε καθόλου FileAttributes,​ τότε η νέα διεύθυνση θα έχει προεπιλεγμένα χαρακτηριστικά. 
- ​Για παράδειγμα:​ 
- 
-<code java> 
-Path dir = ...; 
-Files.createDirectory(path);​ 
-</​code>​ 
- 
-Το ακόλουθο κομμάτι κώδικα δημιουργεί μια νέα διεύθυνση για ένα σύστημα αρχείων POSIX που έχει συγκεκριμένα δικαιώματα:​ 
- 
-<code java> 
-Set<​PosixFilePermission>​ perms = 
-    PosixFilePermissions.fromString("​rwxr-x---"​);​ 
-FileAttribute<​Set<​PosixFilePermission>>​ attr = 
-    PosixFilePermissions.asFileAttribute(perms);​ 
-Files.createDirectory(file,​ attr); 
-</​code>​ 
- 
-Για να δημιουργήσουμε μια διεύθυνση κάποιοα επίπεδα βαθιά όταν μία ή περισσότερες από τις μητρικές τους διευθύνσεις δεν θα μπορούσε να υπάρχει ακόμα, μπορούμε να χρησιμοποιήσουμε τη μέθοδο //​createDirectories (Path, FileAttribute <?>​)//​. Όπως και με την //​createDirectory (Path, FileAttribute <?>​)//​ μέθοδο,​ μπορούμε να καθορίσουμε ένα προαιρετικό σύνολο των αρχικών χαρακτηριστικών αρχείου. 
-Το ακόλουθο κομμάτι κώδικα χρησιμοποιεί προεπιλεγμένα χαρακτηριστικά:​ 
- 
-<code java> 
-Files.createDirectories(Paths.get("​foo/​bar/​test"​));​ 
-</​code>​ 
- 
-Οι διευθύνσεις δημιουργούνται,​ όπως απαιτείται,​ από πάνω προς τα κάτω. Στο foo/​bar/​test παράδειγμα,​ αν η διεύθυνση foo δεν υπάρχει,​ δημιουργείται. Στη συνέχεια δημιουργείται η διεύθυνση bar, εάν χρειάζεται,​ και τέλος δημιουργείται η διεύθυνση test . 
- 
-Είναι δυνατόν η μέθοδος αυτή να αποτύχει μετά τη δημιουργία κάποιων,​ αλλά όχι όλων, των μητρικών διευθύνσεων. 
- 
-==== Δημιουργία μιας Προσωρινής Διεύθυνσης ==== 
- 
-Μπορούμε να δημιουργήσουμε μία προσωρινή διεύθυνη,​ χρησιμοποιώντας μία από τις createTempDirectory μεθόδους:​ 
- 
-  * createTempDirectory(Path,​ String, FileAttribute<?>​...) 
-  * createTempDirectory(String,​ FileAttribute<?>​...) 
- 
-Η πρώτη μέθοδος επιτρέπει στον κώδικας να καθορίσει μια θέση για την προσωρινή διεύθυνση και η δεύτερη μέθοδος δημιουργεί μία νέα διεύθυνση στην προεπιλεγμένη διεύθυνση προσωρινών αρχείων. 
- 
-==== Καταχώρηση των περιεχομένων μιας Διεύθυνσης ==== 
- 
-Μπορούμε να καταχωρήσουμε όλα τα περιεχόμενα μιας διεύθυνσης με τη χρήση της μεθόδου //​newDirectoryStream(Path)//​. Αυτή η μέθοδος επιστρέφει ένα αντικείμενο που υλοποιεί το περιβάλλον //​DirectoryStream//​. Η κλάση που υλοποιεί το interface DirectoryStream υλοποιεί επίσης //​Iterable//,​ ώστε να μπορούμε να διατρέξουμε το stream διέυθυνσης,​ διαβάζοντας όλα τα αντικείμενα. Αυτή η προσέγγιση έχει καλή κλιμάκωση σε πολύ μεγάλες διευθύνσεις. 
- 
-Σημείωση:​ Το DirectoryStream που επιστρέφεται είναι ένα //stream//. Εάν δεν χρησιμοποιείτε try-with-resources,​ μην ξεχάσετε να κλείσετε το //stream// στο //finally// block. Η try-with-resources δομή φροντίζει γι '​αυτό μόνη της. 
- 
-Το ακόλουθο κομμάτι κώδικα δείχνει πώς να εκτυπώσετε τα περιεχόμενα μιας διεύθυνσης:​ 
- 
-<code java> 
-Path dir = ...; 
-try (DirectoryStream<​Path>​ stream = Files.newDirectoryStream(dir)) { 
-    for (Path file: stream) { 
-        System.out.println(file.getFileName());​ 
-    } 
-} catch (IOException | DirectoryIteratorException x) { 
-    // IOException can never be thrown by the iteration. 
-    // In this snippet, it can only be thrown by newDirectoryStream. 
-    System.err.println(x);​ 
-} 
-</​code>​ 
- 
-Τα αντικείμενα //Path// που επιστρέφουν από την iterator είναι τα ονόματα των εισόδων που επιλύθηκαν κατά της διεύθυνσης. Έτσι, εάν καταχωρούμε τα περιεχόμενα της διεύθυνσης /tmp, οι είσοδοι επιστρέφονται με τη μορφή /tmp/a, /tmp/b, και ούτω καθεξής. 
- 
-Αυτή η μέθοδος επιστρέφει ολόκληρο το περιεχόμενο μιας διεύθυνσης:​ αρχεία,​ συνδέσμους,​ υποδιευθύνσεις και κρυφά αρχεία. Αν θέλουμε να είμαστε πιο επιλεκτικοί σχετικά με το περιεχόμενο που ανακτάται,​ μπορούμε να χρησιμοποιήσουμε μία από τις άλλες μεθόδους //​newDirectoryStream//​. 
- 
-Σημειώστε ότι αν υπάρχει ένα exception κατά τη διάρκεια της επανάληψης διεύθυνσης,​ τότε το //​DirectoryIteratorException//​ εμφανίζεται με το //​IOException//​ ως αιτία. ​ 
java/creating_and_reading_directories.txt · Last modified: 2016/02/26 11:15 (external edit)