java:class_file

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
java:class_file [2016/03/18 14:55]
gthanos created
java:class_file [2017/02/17 07:58]
gthanos
Line 1: Line 1:
 ====== Η κλάση File ====== ====== Η κλάση File ======
  
-Η κλάση [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​File.html|java.io.File]] απεικονίζει ένα αρχείο ή directory ​από το λειτουργικό σας σύστημα. ​+Η κλάση [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​File.html|java.io.File]] απεικονίζει ένα αρχείο ή κατάλογος ​από το λειτουργικό σας σύστημα. ​Μέσω της κλάσης File μπορείτε να έχετε πρόσβαση στα αρχεία του συστήματος σας, να εξετάσετε κατά πόσο ένα αρχείο είναι κατάλογος ή απλό αρχείο,​ να δείτε τα περιεχόμενα ενός καταλόγου,​ να εξετάσετε εάν ένα αρχείο είναι εκτελέσιμο ή όχι και άλλα.  
 + 
 +Προκειμένου να φτιάξετε ένα αντικείμενο της κλάσης File αρκεί να χρησιμοποιήσετε έναν από τους κατασκευαστές της κλάσης File. Ο πιο απλός κατασκευαστής της κλάσης είναι ο παρακάτω,​ ο οποίος λαμβάνει ως όρισμα ένα String που περιέχει το path ενός αρχείο και δημιουργεί το αντικείμενο της κλάσης File. 
 +<code java> 
 +public File(String pathname) 
 +</​code>​ 
 + 
 +Για παράδειγμα,​ αν θέλετε να δημιουργήσετε ένα αντικείμενο File για τον τρέχον κατάλογο αρκεί να γράψετε 
 +<code java> 
 +File currentDir = new File("​."​);​ 
 +</​code>​ 
 + 
 + 
 +Αν θέλετε να δημιουργήσετε ένα αντικείμενο File για το αρχείο **myFavoritSong.mp3** που βρίσκεται μέσα στον κατάλογο **C:​\Users\<​YourUsername>​\Music\** (αντικαταστήστε το **<​YourUsername**>​ με το username σας στο λειτουργικό σύστημα Windows), τότε αρκεί να γράψετε 
 +<code java> 
 +File favoritSong = new File("​C:​\Users\<​YourUsername>​\Music\myFavoritSong.mp3"​);​ 
 +</​code>​ 
 + 
 +===== Μέθοδοι της κλάσης File ===== 
 + 
 +Βασικές μέθοδοι της κλάσης File είναι οι παρακάτω:​ 
 +  * ''​public boolean canExecute()''​ : Ελέγχει εάν το αρχείο είναι εκτελέσιμο. 
 +  * ''​public boolean canRead()''​ : Ελέγχει εάν μπορούμε να ανοίξουμε το αρχείο για διάβασμα. 
 +  * ''​public boolean canWrite()''​ : Ελέγχει εάν μπορούμε να ανοίξουμε το αρχείο για γράψιμο. 
 +  * ''​public boolean createNewFile()''​ : Δημιουργεί ένα νέο κενό αρχείο στο filesystem, εφόσον το αντικείμενο File δεν αντιστοιχεί σε υπαρκτό αρχείο. 
 +  * ''​public boolean delete()''​ : Επιχειρεί να διαγράψει το αρχείο ή κατάλογο. Επιστρέφει **true** εάν επέτυχε η διαγραφή,​ διαφορετικά **false**. 
 +  * ''​public boolean exists()''​ : Ελέγχει εάν το συγκεκριμένο αντικείμενο αντικατοπτρίζει ένα πραγματικό αρχείο ή κατάλογο στο filesystem. 
 +  * ''​public String getAbsolutePath()''​ : Επιστρέφει το απόλυτο path για ένα υπαρκτό αρχείο ή κατάλογο. Η συγκεκριμένη μέθοδος έχει νόημα εάν έχετε δημιουργήσει το αντικείμενο χρησιμοποιώντας ένα σχετικό path αντί για απόλυτο.  
 +  * ''​public String getName()''​ : Επιστρέφει μόνο το όνομα του αρχείου ή καταλόγου του. 
 +  * ''​public boolean isDirectory()''​ : Ελέγχει εάν το συγκεκριμένο αντικείμενο αντιπροσωπεύει ένα κατάλογο ή όχι. 
 +  * ''​public boolean isFile()''​ : Ελέγχει ένα το συγκεκριμένο αντικείμενο είναι απλό αρχείο (όχι κατάλογος ή ειδικό αρχείο). 
 +  * ''​public long length()''​ : Επιστρέφει το μήκος του αρχείου. 
 +  * ''​public String[] list()''​ : Επιστρέφει ένα πίνακα από Strings που περιέχει τα ονόματα των περιεχόμενων αρχείων. Η συγκεκριμένη μέθοδος έχει νόημα μόνο εάν το αντικείμενο File αντιπροσωπεύει ένα κατάλογο. Διαφορετικά επιστρέφει **null**. 
 +  * ''​public File[] listFiles()''​ : Επιστρέφει ένα πίνακα από Files που περιέχει τα αντικείμενα File για τα περιεχόμενα αρχεία. Η συγκεκριμένη μέθοδος έχει νόημα μόνο εάν το αντικείμενο File αντιπροσωπεύει ένα κατάλογο. Διαφορετικά επιστρέφει **null**. 
 +  * ''​public boolean mkdir()''​ : Δημιουργεί ένα νέο κενό κατάλογο στο filesystem, εφόσον δεν υπάρχει. Επιστρέφει **true** εάν το directory δημιουργηθεί επιτυχώς,​ διαφορετικά επιστρέφει **false**. 
 +   
 +===== Παραδείγματα ===== 
 + 
 +==== Παράδειγμα 1 ==== 
 + 
 +Με χρήση της κλάσης [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​File.html|java.io.File]] δημιουργήστε ένα πρόγραμμα που εκτυπώνει μία λίστα με τα περιεχόμενα των αρχείων του τρέχοντος Directory (ένα σε κάθε γραμμή). 
 +<code java CurrentDirList.java>​ 
 +import java.io.File;​ 
 + 
 +public class CurrentDirList { 
 +  public static void main(String []args) { 
 +    File currentDir = new File("​."​);​ 
 +    File files[] = currentDir.listFiles();​ 
 +    for(File f : files) { 
 +      System.out.println(f.getName());​ 
 +    } 
 +  } 
 +
 +</​code>​ 
 + 
 +Στη συνέχεια εξελίσσουμε το πρόγραμμα ώστε: 
 +  - να λαμβάνει το όνομα του directory από την γραμμή εντολών 
 +  - να εκτυπώνει μόνο αρχεία με κατάληξη **.java**. 
 + 
 +<code java CurrentDirList.java>​ 
 +import java.io.File;​ 
 + 
 +public class CurrentDirList { 
 +  public static void main(String []args) { 
 +    if( args.length == 0 ) { 
 +      System.out.println("​Insufficient number of arguments!"​);​ 
 +      return; 
 +    } 
 +    File currentDir = new File(args[0]);​ 
 +    File files[] = currentDir.listFiles();​ 
 +    for(File f : files) { 
 +      if( f.isFile() && f.getName().substring(f.getName().length()-5).equals("​.java"​) ​ ) { 
 +        System.out.println(f.getName());​ 
 +      } 
 +    } 
 +  } 
 +
 +</​code>​ 
 + 
 +<WRAP tip 80% center round> 
 +Παρατηρήστε ότι είναι απαραίτητη η χρήση της εντολής **import java.io.File;​** στην αρχή του αρχείου. 
 +</​WRAP>​ 
 + 
 +==== Παράδειγμα 2 ==== 
 + 
 +Με χρήση της κλάσης [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​File.html|java.io.File]] δημιουργήστε ένα πρόγραμμα που λαμβάνει το όνομα ενός αρχείου από την γραμμή εντολών και εάν δεν υπάρχει το δημιουργεί στο τρέχον directory. 
 + 
 +<code java CreateEmptyFile.java>​ 
 + 
 +import java.io.File;​ 
 + 
 +public class CreateEmptyFile { 
 +  public static void main(String args[]) { 
 +    if( args.length == 0 ) { 
 +      System.out.println("​Insufficient number of arguments!"​);​ 
 +      return; 
 +    } 
 +    File f = new File("​./"​+args[0]);​ 
 +    if( !f.exists() ) { 
 +      try { 
 +        f.createNewFile();​ 
 +      } catch( Exception ex ) { 
 +        ex.printStackTrace();​ 
 +      } 
 +    } 
 +  } 
 +
 +</​code>​ 
 + 
 +<WRAP tip 80% center round> 
 +Με βάση το παραπάνω πρόγραμμα δημιουργήστε μία παραλλαγή του που να δημιουργεί ένα directory με το όνομα που δίνετε από την γραμμή εντολών αντί για ένα κανονικό αρχείο. 
 +</​WRAP>​ 
 + 
 + 
 +|Προηγούμενο:​ [[ java:​packages:​using | Χρήση (μεταγλωττισμένων) κλάσεων από άλλες κλάσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο:​ [[ :​java:​read_from_file | Διαβάζοντας από ένα αρχείο]] | 
  
java/class_file.txt · Last modified: 2017/02/17 07:58 by gthanos