Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

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

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

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

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

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

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

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
}
}
}
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(); } } }
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. Παρακάτω έχουμε ένα παράδειγμα που διαβάζει ένα αρχείο κειμένου και εμφανίζει τα περιεχόμενά του:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
}
}
}
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(); } } }
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. Παρακάτω έχουμε ένα παράδειγμα που αντικαθιστά το περιεχόμενο ενός αρχείου κειμένου με νέο κείμενο:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
}
}
}
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(); } } }
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. Παρακάτω έχουμε ένα παράδειγμα που διαγράφει ένα αρχείο:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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.");
}
}
}
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."); } } }
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 !!
Μετάβαση σε γραμμή εργαλείων