java:creating_and_reading_directories

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Δημιουργία και ανάγνωση Διευθύνσεων ====== ==== Καταχώρηση 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.1425498487.txt.gz · Last modified: 2016/02/26 11:15 (external edit)