6.1 Η διαχείριση αρχείων στην Java

Η διαχείριση αρχείων στην Java αναφέρεται στις διάφορες λειτουργίες και δυνατότητες που παρέχονται από την Java για την εργασία με αρχεία. Αυτές οι λειτουργίες περιλαμβάνουν τη δημιουργία, την ανάγνωση, την εγγραφή, τη μετονομασία, τη διαγραφή και τη μετακίνηση αρχείων.

Για να διαχειριστείτε αρχεία στην Java, μπορείτε να χρησιμοποιήσετε τις κλάσεις και τις μεθόδους που παρέχονται από το πακέτο java.io. Μερικές από τις κύριες κλάσεις που χρησιμοποιούνται για τη διαχείριση αρχείων είναι οι File, FileReader, FileWriter, BufferedReader και BufferedWriter.

Με αυτές τις κλάσεις, μπορείτε να δημιουργήσετε αντικείμενα που αντιπροσωπεύουν αρχεία, να διαβάσετε και να εγγράψετε δεδομένα σε αρχεία, να περιηγηθείτε στο περιεχόμενο ενός αρχείου γραμμή προς γραμμή, και να εκτελέσετε άλλες ενέργειες σχετικές με τα αρχεία.

Η διαχείριση αρχείων στην Java είναι ένα σημαντικό κομμάτι της προγραμματιστικής διαδικασίας, καθώς σας επιτρέπει να αποθηκεύετε και να ανακτάτε δεδομένα από αρχεία, καθώς και να διαχειρίζεστε τον φάκελο του συστήματος αρχείων.

Για να δημιουργήσετε ένα νέο αρχείο στην Java, μπορείτε να χρησιμοποιήσετε την κλάση File και τη μέθοδο createNewFile().

Παράδειγμα:

import java.io.File;
import java.io.IOException;

public class CreateFileExample {
    public static void main(String[] args) {
        try {
            // Δημιουργία αντικειμένου File με το όνομα "myfile.txt"
            File myFile = new File("myfile.txt");

            // Προσπάθεια δημιουργίας του αρχείου
            if (myFile.createNewFile()) {
                System.out.println("File created: " + myFile.getName());
            } else {
                System.out.println("File already exists.");
            }
        } catch (IOException e) {
            // Εκτύπωση μηνύματος σε περίπτωση σφάλματος
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

Ο παραπάνω κώδικας δημιουργεί ένα αρχείο με το όνομα “myfile.txt”. Αν το αρχείο δεν υπάρχει ήδη, τότε δημιουργείται και εμφανίζεται το μήνυμα “File created: [όνομα αρχείου]”. Αν το αρχείο υπάρχει ήδη, τότε εμφανίζεται το μήνυμα “File already exists.”.

Αν κατά τη δημιουργία του αρχείου προκύψει κάποιο σφάλμα, τότε εμφανίζεται το μήνυμα “An error occurred.” και εκτυπώνονται πληροφορίες σχετικά με το σφάλμα (μέσω της μεθόδου printStackTrace()). Αυτό μπορεί να συμβεί, για παράδειγμα, αν ο χρήστης δεν έχει τα απαραίτητα δικαιώματα για να δημιουργήσει το αρχείο ή αν υπάρχει κάποιο άλλο πρόβλημα στο σύστημα αρχείων.

Για να διαβάσετε τα περιεχόμενα ενός αρχείου, μπορείτε να χρησιμοποιήσετε την κλάση FileInputStream και την κλάση Scanner. Παρακάτω έχουμε ένα παράδειγμα που διαβάζει ένα αρχείο κειμένου και εμφανίζει τα περιεχόμενά του:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFileExample {
  public static void main(String[] args) {
    try {
      // Δημιουργία ενός αντικειμένου File για το αρχείο που θέλουμε να διαβάσουμε
      File myFile = new File("myfile.txt");

      // Δημιουργία ενός αντικειμένου Scanner για τη διάβαση του αρχείου
      Scanner myReader = new Scanner(new FileInputStream(myFile));

      // Επανάληψη μέχρι να υπάρξουν άλλες γραμμές στο αρχείο
      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();
    }
  }
}

Ο παραπάνω κώδικας διαβάζει ένα αρχείο κειμένου (“myfile.txt”) και εμφανίζει τα περιεχόμενά του στην οθόνη.

Αρχικά, δημιουργείται ένα αντικείμενο τύπου File που αντιπροσωπεύει το αρχείο που θα διαβαστεί. Στη συνέχεια, δημιουργείται ένα αντικείμενο τύπου Scanner, το οποίο θα χρησιμοποιηθεί για τη διάβαση του αρχείου. Το αρχείο ανοίγει με τη χρήση της κλάσης FileInputStream.

Στη συνέχεια, μέσα σε ένα βρόχο while, γίνεται η ανάγνωση της επόμενης γραμμής από το αρχείο χρησιμοποιώντας την μέθοδο nextLine() του αντικειμένου Scanner. Η γραμμή που διαβάζεται αποθηκεύεται στη μεταβλητή data και εμφανίζεται στην οθόνη με τη χρήση της μεθόδου println() της κλάσης System.out.

Ο βρόχος επαναλαμβάνεται μέχρι να διαβαστούν όλες οι γραμμές του αρχείου. Τέλος, το αντικείμενο Scanner κλείνει με τη χρήση της μεθόδου close() για να απελευθερωθούν τυχόν πόροι που χρησιμοποιούνται από το ανοιχτό αρχείο.

[adinserter block=”2″]

Για να ενημερώσετε ένα αρχείο στην Java, μπορείτε να χρησιμοποιήσετε την κλάση FileWriter. Παρακάτω έχουμε ένα παράδειγμα που αντικαθιστά το περιεχόμενο ενός αρχείου κειμένου με νέο κείμενο:

import java.io.FileWriter;
import java.io.IOException;

public class UpdateFileExample {
  public static void main(String[] args) {
    try {
      // Δημιουργία αντικειμένου FileWriter για το αρχείο "myfile.txt"
      FileWriter myWriter = new FileWriter("myfile.txt");

      // Εγγραφή του κειμένου "Hello World!" στο αρχείο
      myWriter.write("Hello World!");

      // Κλείσιμο του FileWriter για να αποθηκευτούν οι αλλαγές στο αρχείο
      myWriter.close();

      // Εκτύπωση μηνύματος επιτυχούς ενημέρωσης του αρχείου
      System.out.println("Successfully updated the file.");
    } catch (IOException e) {
      // Εκτύπωση μηνύματος σε περίπτωση σφάλματος
      System.out.println("An error occurred.");
      e.printStackTrace();
    }
  }
}

Ο παραπάνω κώδικας δημιουργεί ένα αντικείμενο FileWriter για το αρχείο “myfile.txt” και εγγράφει το κείμενο “Hello World!” στο αρχείο. Στη συνέχεια, το FileWriter κλείνεται για να αποθηκευτούν οι αλλαγές στο αρχείο. Εάν η εγγραφή γίνει επιτυχώς, εμφανίζεται το μήνυμα “Successfully updated the file.” Αν προκύψει κάποιο σφάλμα κατά τη διαδικασία της εγγραφής, εμφανίζεται το μήνυμα “An error occurred.” και εκτυπώνεται η στοίβα αναφοράς σφάλματος (stack trace).

Τέλος, για να διαγράψετε ένα αρχείο στην Java, μπορείτε να χρησιμοποιήσετε τη μέθοδο delete() της κλάσης File. Παρακάτω έχουμε ένα παράδειγμα που διαγράφει ένα αρχείο:

import java.io.File;

public class DeleteFileExample {
    public static void main(String[] args) {
        // Δημιουργία ενός αντικειμένου File για το αρχείο που θέλουμε να διαγράψουμε
        File myFile = new File("myfile.txt");

        // Προσπάθεια διαγραφής του αρχείου
        if (myFile.delete()) {
            System.out.println("Deleted the file: " + myFile.getName());
        } else {
            System.out.println("Failed to delete the file.");
        }
    }
}

Ο κώδικας αυτός αναφέρεται στη διαγραφή ενός αρχείου με το όνομα “myfile.txt”. Ας δούμε αναλυτικά τι κάνει ο κώδικας:

  1. Αρχικά, γίνεται η εισαγωγή της κλάσης File από το πακέτο java.io, η οποία παρέχει λειτουργίες για τη χειρισμό αρχείων.
  2. Στη συνέχεια, ορίζεται η κλάση DeleteFileExample.
  3. Στη μέθοδο main, δημιουργείται ένα αντικείμενο myFile τύπου File με το όνομα “myfile.txt”.
  4. Εκτελείται η εντολή if (myFile.delete()), η οποία επιχειρεί να διαγράψει το αρχείο. Αν η διαγραφή είναι επιτυχής, εκτυπώνεται το μήνυμα “Deleted the file: [όνομα αρχείου]”. Αν η διαγραφή αποτύχει, εκτυπώνεται το μήνυμα “Failed to delete the file.”.

Συνολικά, ο κώδικας αυτός προσπαθεί να διαγράψει το αρχείο “myfile.txt” και εμφανίζει αντίστοιχα μηνύματα επιτυχίας ή αποτυχίας ανάλογα με το αποτέλεσμα της διαγραφής.

Η κλάση File παρέχει πολλές χρήσιμες μεθόδους για τη δημιουργία και τη λήψη πληροφοριών σχετικά με αρχεία και φακέλους.

Παρακάτω παραθέτουμε μερικές από τις πιο συχνά χρησιμοποιούμενες μεθόδους της κλάσης File και τις περιγράφουμε σύντομα:

[adinserter block=”3″]

Παρουσιάσουμε αυτές τις μεθόδους σε μορφή πίνακα για μεγαλύτερη ευκολία:

ΜέθοδοςΤύποςΠεριγραφή
canRead()BooleanΕλέγχει αν το αρχείο μπορεί να διαβαστεί.
canWrite()BooleanΕλέγχει αν το αρχείο μπορεί να εγγραφεί.
createNewFile()BooleanΔημιουργεί ένα κενό αρχείο.
delete()BooleanΔιαγράφει ένα αρχείο.
exists()BooleanΕλέγχει αν το αρχείο υπάρχει.
getName()StringΕπιστρέφει το όνομα του αρχείου.
getAbsolutePath()StringΕπιστρέφει την απόλυτη διαδρομή του αρχείου.
length()LongΕπιστρέφει το μέγεθος του αρχείου σε bytes.
list()String[]Επιστρέφει έναν πίνακα με τα ονόματα των αρχείων στον φάκελο.
mkdir()BooleanΔημιουργεί έναν νέο φάκελο.

Αυτές οι μέθοδοι μπορούν να χρησιμοποιηθούν για να προσαρμόσετε τη συμπεριφορά της εφαρμογής σας σε σχέση με τα αρχεία και τους φακέλους που χειρίζεστε.

16 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων