6.2 Δημιουργία και εγγραφή σε αρχεία στην Java

Για να δημιουργήσετε και να γράψετε σε ένα αρχείο στην Java, χρειάζεστε να δημιουργήσετε ένα αντικείμενο της κλάσης File και ένα αντικείμενο της κλάσης FileWriter.

Παρακάτω έχουμε ένα παράδειγμα που δημιουργεί ένα νέο αρχείο “myfile.txt” στον φάκελο εκτέλεσης της εφαρμογής και γράφει σε αυτό το κείμενο “Hello World!”:

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

public class WriteToFileExample {
  public static void main(String[] args) {
    try {
      // Δημιουργία ενός νέου αρχείου με όνομα "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.");
      }

      // Δημιουργία αντικειμένου FileWriter για εγγραφή στο αρχείο "myfile.txt"
      FileWriter myWriter = new FileWriter("myfile.txt");

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

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

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

Ο παραπάνω κώδικας πραγματοποιεί τις εξής ενέργειες:

  1. Δημιουργεί ένα νέο αρχείο με όνομα “myfile.txt” στον τρέχοντα φάκελο.
  2. Ελέγχει αν το αρχείο υπάρχει ήδη. Αν δεν υπάρχει, δημιουργεί το αρχείο και εμφανίζει το μήνυμα “File created: [όνομα αρχείου]”. Αν υπάρχει, εμφανίζει το μήνυμα “File already exists.”.
  3. Δημιουργεί ένα αντικείμενο FileWriter για εγγραφή στο αρχείο “myfile.txt”.
  4. Εγγράφει το κείμενο “Hello World!” στο αρχείο.
  5. Κλείνει το αντικείμενο FileWriter για να αποθηκευτούν οι αλλαγές στο αρχείο.
  6. Εμφανίζει το μήνυμα “Successfully wrote to the file.” για να υποδείξει ότι η εγγραφή στο αρχείο ολοκληρώθηκε με επιτυχία.
  7. Αν προκύψει κάποιο σφάλμα κατά την εγγραφή στο αρχείο, εμφανίζει το μήνυμα “An error occurred.” και εκτυπώνει το μήνυμα σφάλματος (stack trace) για να βοηθήσει στον εντοπισμό του προβλήματος.

[adinserter block=”2″]

Μπορείτε να προσθέσετε περισσότερο κείμενο στο αρχείο προσθέτοντας ένα ακόμα κλήση της μεθόδου write() του αντικειμένου FileWriter. Για παράδειγμα, μπορείτε να προσθέσετε τη γραμμή “I just wrote to my first file!” προσθέτοντας την παρακάτω γραμμή κώδικα:

myWriter.write("I just wrote to my first file!");

Επίσης, αν θέλετε να προσθέσετε κείμενο σε ένα υπάρχον αρχείο αντί να δημιουργήσετε ένα νέο, μπορείτε να περάσετε το αντικείμενο File στον κατασκευαστή του FileWriter αντί για το όνομα του αρχείου.

Για παράδειγμα:

File myFile = new File("myfile.txt");
FileWriter myWriter = new FileWriter(myFile, true);

Η δεύτερη παράμετρος του κατασκευαστή του FileWriter είναι ένα boolean που υποδηλώνει εάν θέλετε να επιτρέψετε την προσάρτηση κειμένου στο υπάρχον αρχείο αντί να το αντικαταστήσετε εντελώς. Στο παραπάνω παράδειγμα, η τιμή true επιτρέπει την προσάρτηση νέου κειμένου στο τέλος του υπάρχοντος αρχείου.

Αν θέλετε να δημιουργήσετε ένα αρχείο στη Java, μπορείτε να χρησιμοποιήσετε τη μέθοδο createNewFile(). Αυτή η μέθοδος επιστρέφει μια boolean τιμή: true αν το αρχείο δημιουργήθηκε επιτυχώς και false αν το αρχείο υπάρχει ήδη. Παρακάτω έχουμε ένα παράδειγμα:

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

public class CreateFileExample {
    public static void main(String[] args) {
        try {
            // Δημιουργία ενός νέου αντικειμένου File με το όνομα "mytextfile.txt"
            File myFile = new File("mytextfile.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();
        }
    }
}

Το πρόγραμμα δημιουργεί ένα αρχείο με το όνομα “mytextfile.txt” στον τρέχοντα κατάλογο. Αν το αρχείο δεν υπάρχει ήδη, τότε δημιουργείται και εμφανίζεται το μήνυμα “File created: mytextfile.txt”. Αν το αρχείο υπάρχει ήδη, τότε εμφανίζεται το μήνυμα “File already exists.”.

Το πρόγραμμα χρησιμοποιεί την κλάση File από το πακέτο java.io για να εκτελέσει τις λειτουργίες σχετικές με το αρχείο. Εάν συμβεί οποιοδήποτε σφάλμα κατά τη δημιουργία του αρχείου, εμφανίζεται το μήνυμα “An error occurred.” και η εξαίρεση που προκλήθηκε εκτυπώνεται στην κονσόλα.

Για να δημιουργήσετε ένα αρχείο σε ένα συγκεκριμένο φάκελο (απαιτεί άδεια), ορίστε τη διαδρομή του αρχείου και χρησιμοποιήστε διπλά ανάκλισης για να διαφυγείτε από το χαρακτήρα “\” (στα Windows). Στο Mac και το Linux μπορείτε απλά να γράψετε τη διαδρομή ως “/” (forward slash).

[adinserter block=”3″]

Παραδείγματα:

Δημιουργία αρχείου στα Windows:

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

public class CreateFileExample {
  public static void main(String[] args) {
    try {
      // Δημιουργία ενός αντικειμένου File για τον καθορισμό του αρχείου που θα δημιουργηθεί
      File myFile = new File("C:\\Users\\myusername\\mytextfile.txt");

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

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

  1. Αρχικά, γίνεται η εισαγωγή των απαραίτητων κλάσεων (import java.io.File και import java.io.IOException) για τη χρήση αρχείων και εξαιρέσεων, αντίστοιχα.
  2. Ορίζεται η κλάση CreateFileExample.
  3. Στην κύρια μέθοδο main, που είναι η μέθοδος εκκίνησης του προγράμματος, ξεκινάει ένα try-catch block για την αντιμετώπιση εξαιρέσεων.
  4. Δημιουργείται ένα νέο αντικείμενο File με τη χρήση του αρχείου που ορίζεται από τη συμβολοσειρά "C:\\Users\\myusername\\mytextfile.txt". Αυτό καθορίζει την τοποθεσία και το όνομα του αρχείου που θα δημιουργηθεί.
  5. Με τη χρήση της μεθόδου createNewFile() ελέγχεται εάν το αρχείο ήδη υπάρχει ή όχι. Αν το αρχείο δεν υπάρχει, τότε δημιουργείται με τη χρήση της createNewFile() και εκτυπώνεται το μήνυμα “File created: ” ακολουθούμενο από το όνομα του αρχείου.
  6. Αν το αρχείο ήδη υπάρχει, εκτυπώνεται το μήνυμα “File already exists.”.
  7. Αν προκύψει κάποιο σφάλμα κατά την εκτέλεση των παραπάνω εντολών, πιάνεται η αντίστοιχη εξαίρεση IOException και εκτυπώνεται το μήνυμα “An error occurred.”, ακολουθούμενο από την αναφορά του stack trace του σφάλματος.

Δημιουργία αρχείου στο Mac ή το Linux:

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

public class CreateFileExample {
    public static void main(String[] args) {
        try {
            // Δημιουργία αντικειμένου File με το διαδρομή και όνομα του αρχείου
            File myFile = new File("/Users/myusername/mytextfile.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();
        }
    }
}

Ο κώδικας αυτός δημιουργεί ένα νέο αρχείο στο σύστημα αρχείων με το όνομα “mytextfile.txt” στη διαδρομή “/Users/myusername/”. Αν το αρχείο δημιουργηθεί με επιτυχία, εμφανίζεται το μήνυμα “File created: [όνομα αρχείου]”. Αν το αρχείο υπάρχει ήδη, εμφανίζεται το μήνυμα “File already exists.” Εάν προκύψει κάποιο σφάλμα κατά τη δημιουργία του αρχείου, εμφανίζεται το μήνυμα “An error occurred.” και τυπώνονται πληροφορίες για το σφάλμα στο στοίβα (stack trace) με τη χρήση της μεθόδου printStackTrace().

Σε αυτά τα παραδείγματα, ορίζεται η διαδρομή του αρχείου στην κλάση File χρησιμοποιώντας διπλό ανάκλισης για την αποφυγή του χαρακτήρα “\” στα Windows. Αντίθετα, στο Mac και στο Linux, χρησιμοποιείται απλά “/” στη διαδρομή του αρχείου.

Στο παρακάτω παράδειγμα, χρησιμοποιούμε την κλάση FileWriter μαζί με τη μέθοδό της write() για να γράψουμε κάποιο κείμενο στο αρχείο που δημιουργήσαμε στο προηγούμενο παράδειγμα. Σημειώστε ότι όταν τελειώσετε τη γραφή στο αρχείο, θα πρέπει να το κλείσετε με τη μέθοδο close():

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

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

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

      // Κλείσιμο του FileWriter για να ολοκληρωθεί η εγγραφή
      myWriter.close();

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

Ο παραπάνω κώδικας δημιουργεί ένα αρχείο κειμένου με όνομα “mytextfile.txt” και εγγράφει το κείμενο “Hello World!” μέσα σε αυτό το αρχείο. Αν όλα πάνε καλά και δεν προκύψει κάποιο σφάλμα κατά τη διάρκεια της εγγραφής, εμφανίζεται το μήνυμα “Successfully wrote to the file.”.

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

Συνολικά, ο κώδικας χρησιμοποιεί την κλάση FileWriter για να δημιουργήσει ένα αρχείο κειμένου και τη μέθοδο write για να εγγράψει το κείμενο μέσα στο αρχείο. Τέλος, ο κώδικας κλείνει τον FileWriter για να ολοκληρωθεί η εγγραφή και εκτυπώνει μηνύματα επιβεβαίωσης ή σφάλματος ανάλογα με την περίπτωση.

Σημειώστε ότι η μέθοδος FileWriter.write() επιτρέπει την εγγραφή κειμένου σε αρχεία. Αν χρειάζεστε να γράψετε δεδομένα από άλλους τύπους δεδομένων, όπως αριθμούς ή αντικείμενα, μπορείτε να χρησιμοποιήσετε τη μέθοδο toString() για να μετατρέψετε τα δεδομένα σε συμβατή μορφή κειμένου πριν τη γραφή τους στο αρχείο.

Παρακάτω έχουμε ένα παράδειγμα που χρησιμοποιεί τη μέθοδο toString() για να μετατρέψει έναν αριθμό σε συμβατή μορφή κειμένου και στη συνέχεια τον γράφει σε ένα αρχείο:

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

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

            // Καταχώρηση του αριθμού που θέλουμε να γράψουμε στο αρχείο
            int number = 42;

            // Εγγραφή του αριθμού ως συμβολοσειρά στο αρχείο
            myWriter.write(Integer.toString(number));

            // Κλείσιμο του FileWriter για να ολοκληρωθεί η εγγραφή
            myWriter.close();

            // Επιτυχής εκτύπωση μηνύματος ότι ο αριθμός εγράφη στο αρχείο
            System.out.println("Successfully wrote number to file.");
        } catch (IOException e) {
            // Εκτύπωση μηνύματος σφάλματος σε περίπτωση εξαίρεσης
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

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

  1. Εισάγει τις απαραίτητες κλάσεις FileWriter και IOException από το πακέτο java.io.
  2. Δημιουργεί μια κλάση με όνομα WriteNumberToFileExample.
  3. Δημιουργεί την main μέθοδο ως την εκκίνηση του προγράμματος.
  4. Τοποθετεί τον κώδικα μέσα σε μια δομή try-catch για την αντιμετώπιση εξαιρέσεων.
  5. Δημιουργεί ένα αντικείμενο της κλάσης FileWriter με όνομα myWriter και παρέχει το όνομα του αρχείου “mynumberfile.txt” που θα δημιουργηθεί ή επεξεργαστεί.
  6. Ορίζει τον αριθμό που θέλουμε να γράψουμε στο αρχείο ως μια μεταβλητή με όνομα number και τιμή 42.
  7. Χρησιμοποιεί τη μέθοδο write του αντικειμένου myWriter για να εγγράψει τον αριθμό ως συμβολοσειρά στο αρχείο.
  8. Κλείνει το αντικείμενο myWriter με την μέθοδο close() για να ολοκληρωθεί η εγγραφή και να απελευθερωθούν πόροι.
  9. Εάν όλα πήγαν καλά και δεν προέκυψε κάποιο σφάλμα, εκτυπώνει ένα μήνυμα επιτυχίας στην κονσόλα.
  10. Σε περίπτωση που προέκυψε κάποιο σφάλμα κατά την εγγραφή, εκτυπώνει ένα μήνυμα λάθους και την ανακοίνωση του σφάλματος.

Συνολικά, ο κώδικας δημιουργεί ένα αρχείο με όνομα “mynumberfile.txt” και εγγράφει τον αριθμό 42 σε αυτό το αρχείο.

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