Η ανάγνωση αρχείων στην Java αποτελεί διαδικασία κατά την οποία το πρόγραμμα διαβάζει τα περιεχόμενα ενός αρχείου και τα χρησιμοποιεί για επεξεργασία ή εμφάνιση. Υπάρχουν διάφοροι τρόποι για να διαβάσουμε αρχεία στην Java, και ο κατάλληλος τρόπος εξαρτάται από τις ανάγκες του προγράμματος και τον τύπο του αρχείου.
Ένας τυπικός τρόπος ανάγνωσης αρχείων είναι η χρήση της κλάσης File
για να αναπαραστήσουμε το αρχείο και της κλάσης Scanner
για να διαβάσουμε το περιεχόμενο του. Ακολουθεί ένα παράδειγμα κώδικα που επιδεικνύει την ανάγνωση ενός αρχείου με χρήση αυτής της μεθόδου:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileExample { public static void main(String[] args) { try { // Δημιουργία ενός αντικειμένου File για το αρχείο που θέλουμε να διαβάσουμε File file = new File("filename.txt"); // Δημιουργία ενός αντικειμένου Scanner για την ανάγνωση του αρχείου Scanner scanner = new Scanner(file); // Επανάληψη για κάθε γραμμή του αρχείου while (scanner.hasNextLine()) { // Διάβασμα της επόμενης γραμμής από το Scanner String line = scanner.nextLine(); // Εκτύπωση της γραμμής System.out.println(line); } // Κλείσιμο του Scanner scanner.close(); } catch (FileNotFoundException e) { // Αν το αρχείο δεν βρεθεί, εκτύπωση μηνύματος λάθους και αναφοράς στο στοίχημα System.out.println("Το αρχείο δεν βρέθηκε."); e.printStackTrace(); } } }
Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο της κλάσης File
με το όνομα “filename.txt” για να αναπαραστήσουμε το αρχείο που θέλουμε να διαβάσουμε. Στη συνέχεια, δημιουργούμε ένα αντικείμενο Scanner
που διαβάζει το περιεχόμενο του αρχείου. Χρησιμοποιούμε τη μέθοδο hasNextLine()
για να ελέγξουμε αν υπάρχει επόμενη γραμμή στο αρχείο και τη μέθοδο nextLine()
για να διαβάσουμε την επόμενη γραμμή. Επαναλαμβάνουμε αυτήν τη διαδικασία μέχρι να διαβάσουμε όλο το περιεχόμενο του αρχείου.
Στο παράδειγμα, εκτυπώνουμε κάθε γραμμή που διαβάζουμε στην οθόνη. Μετά το πέρας της ανάγνωσης, κλείνουμε τον Scanner
.
Αυτός είναι ένας βασικός τρόπος ανάγνωσης αρχείων στην Java, αλλά υπάρχουν και άλλες μέθοδοι και κλάσεις που μπορούν να χρησιμοποιηθούν, ανάλογα με τις απαιτήσεις του προγράμματος και τον τύπο του αρχείου που πρέπει να διαβαστεί.
[adinserter block=”2″]
Παρακάτω έχουμε ένα παράδειγμα που διαβάζει ένα αρχείο και εμφανίζει τα περιεχόμενά του:
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileExample { public static void main(String[] args) { try { // Δημιουργία αντικειμένου File για να αναπαραστήσει το αρχείο "filename.txt" File myObj = new File("filename.txt"); // Δημιουργία αντικειμένου Scanner για την ανάγνωση του αρχείου Scanner myReader = new Scanner(myObj); // Επανάληψη μέχρι να υπάρχουν επόμενες γραμμές στο αρχείο while (myReader.hasNextLine()) { // Ανάγνωση της επόμενης γραμμής από το αρχείο String data = myReader.nextLine(); // Εκτύπωση της γραμμής System.out.println(data); } // Κλείσιμο του αντικειμένου Scanner μετά την ολοκλήρωση της ανάγνωσης myReader.close(); } catch (FileNotFoundException e) { // Εκτύπωση μηνύματος σφάλματος αν δεν βρεθεί το αρχείο System.out.println("An error occurred."); e.printStackTrace(); } } }
Ο παραπάνω κώδικας διαβάζει ένα αρχείο κειμένου με το όνομα “filename.txt” και εμφανίζει τα περιεχόμενά του στην οθόνη. Ο κώδικας εκμεταλλεύεται την κλάση File
για την αναπαράσταση του αρχείου και την κλάση Scanner
για τη διαβάσματα του περιεχομένου του αρχείου γραμμή προς γραμμή.
Ο κώδικας ακολουθεί τα παρακάτω βήματα:
- Δημιουργείται ένα αντικείμενο
File
με το όνομα “filename.txt” που αναπαριστά το επιθυμητό αρχείο. - Δημιουργείται ένα αντικείμενο
Scanner
με όρισμα το αντικείμενοFile
, προκειμένου να διαβάσει το περιεχόμενο του αρχείου. - Ο κώδικας επαναλαμβάνεται μέχρι να υπάρχουν επόμενες γραμμές στο αρχείο.
- Σε κάθε επανάληψη, διαβάζεται η επόμενη γραμμή του αρχείου με τη χρήση της μεθόδου
nextLine()
του αντικειμένουScanner
. - Η γραμμή που διαβάστηκε αποθηκεύεται στη μεταβλητή
data
. - Η μεταβλητή
data
εκτυπώνεται στην οθόνη με τη χρήση της μεθόδουprintln()
της κλάσηςSystem.out
. - Ο κώδικας συνεχίζει να επαναλαμβάνεται μέχρι να διαβαστούν όλες οι γραμμές του αρχείου.
- Μετά το πέρας της επανάληψης, το αντικείμενο
Scanner
κλείνει με τη χρήση της μεθόδουclose()
, προκειμένου να απελευθερώσει τους πόρους που χρησιμοποιούσε.
Έτσι, ο κώδικας διαβάζει το αρχείο “filename.txt” γραμμή προς γραμμή και εμφανίζει τις γραμμές στην οθόνη.
Είναι σημαντικό να κλείσετε το αρχείο με τη μέθοδο close() της κλάσης Scanner μόλις τελειώσετε με την ανάγνωσή του.
Για να λάβετε περισσότερες πληροφορίες για ένα αρχείο, χρησιμοποιήστε οποιαδήποτε από τις μεθόδους της κλάσης File:
Μέθοδος | Τύπος | Περιγραφή |
---|---|---|
canRead() | Boolean | Επιστρέφει αν το αρχείο μπορεί να διαβαστεί. |
canWrite() | Boolean | Επιστρέφει αν το αρχείο μπορεί να γραφτεί. |
exists() | Boolean | Επιστρέφει αν το αρχείο υπάρχει. |
getName() | String | Επιστρέφει το όνομα του αρχείου. |
getParent() | String | Επιστρέφει το όνομα του πατέρα του αρχείου. |
getPath() | String | Επιστρέφει το μονοπάτι του αρχείου. |
isDirectory() | Boolean | Επιστρέφει αν το αρχείο είναι ένας φάκελος ή όχι. |
isFile() | Boolean | Επιστρέφει αν το αρχείο είναι ένα αρχείο ή όχι. |
length() | Long | Επιστρέφει το μέγεθος του αρχείου σε bytes. |
lastModified() | Long | Επιστρέφει την τελευταία φορά που τροποποιήθηκε το αρχείο σε μορφή χρονικής σήμανσης Unix. |
Παρακάτω έχουμε ένα παράδειγμα που χρησιμοποιεί μερικές από τις μεθόδους της κλάσης File για να πάρει πληροφορίες για ένα αρχείο:
import java.io.File; import java.util.Date; public class FileInfoExample { public static void main(String[] args) { // Δημιουργία ενός αντικειμένου File με το όνομα "example.txt" File file = new File("example.txt"); // Έλεγχος εάν το αρχείο υπάρχει if (file.exists()) { // Εμφάνιση του ονόματος του αρχείου System.out.println("File name: " + file.getName()); // Εμφάνιση της απόλυτης διαδρομής του αρχείου System.out.println("Absolute path: " + file.getAbsolutePath()); // Εμφάνιση του γονικού φακέλου του αρχείου System.out.println("Parent directory: " + file.getParent()); // Εμφάνιση του μεγέθους του αρχείου σε bytes System.out.println("File size: " + file.length() + " bytes"); // Εμφάνιση της τελευταίας τροποποίησης του αρχείου System.out.println("Last modified: " + new Date(file.lastModified())); } else { System.out.println("The file does not exist."); } } }
Ο παραπάνω κώδικας ελέγχει τις πληροφορίες ενός αρχείου με το όνομα “example.txt” και εμφανίζει αυτές τις πληροφορίες στην οθόνη. Αν το αρχείο υπάρχει, εμφανίζονται τα εξής στοιχεία:
- Όνομα αρχείου: Το όνομα του αρχείου “example.txt”.
- Απόλυτη διαδρομή: Η απόλυτη διαδρομή του αρχείου στο σύστημα αρχείων.
- Γονικός φάκελος: Ο φάκελος στον οποίο βρίσκεται το αρχείο.
- Μέγεθος αρχείου: Το μέγεθος του αρχείου σε bytes.
- Τελευταία τροποποίηση: Η ημερομηνία και ώρα της τελευταίας τροποποίησης του αρχείου.
Αν το αρχείο δεν υπάρχει, εμφανίζεται το μήνυμα “The file does not exist.” στην οθόνη.