java:class_file

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Η κλάση File ====== Η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/File.html|java.io.File]] απεικονίζει ένα αρχείο ή directory από το λειτουργικό σας σύστημα. Μέσω της κλάσης File μπορείτε να έχετε πρόσβαση στα αρχεία του συστήματος σας, να εξετάσετε κατά πόσο ένα αρχείο είναι directory ή απλό αρχείο, να δείτε τα περιεχόμενα ενός directory, να εξετάσετε εάν ένα αρχείο είναι εκτελέσιμο ή όχι και άλλα. Προκειμένου να φτιάξετε ένα αντικείμενο της κλάσης File αρκεί να χρησιμοποιήσετε έναν από τους κατασκευαστές της κλάσης File. Ο πιο απλός κατασκευαστής της κλάσης είναι ο παρακάτω, ο οποίος λαμβάνει ως όρισμα ένα String που περιέχει το path ενός αρχείο και δημιουργεί το αντικείμενο της κλάσης File. <code java> public File(String pathname) </code> Για παράδειγμα, αν θέλετε να δημιουργήσετε ένα αντικείμενο File για το τρέχον Directory αρκεί να γράψετε <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()'' : Ελέγχει εάν το συγκεκριμένο αντικείμενο αντιπροσωπεύει ένα directory. * ''public boolean isFile()'' : Ελέγχει ένα το συγκεκριμένο αντικείμενο είναι απλό αρχείο (όχι directory, , όχι ειδικό αρχείο). * ''public long length()'' : Επιστρέφει το μήκος του αρχείου. * ''public String[] list()'' : Επιστρέφει ένα πίνακα από Strings που περιέχει τα ονόματα των περιεχόμενων αρχείων. Η συγκεκριμένη μέθοδος έχει νόημα μόνο εάν το αντικείμενο File αντιπροσωπεύει ένα directory. Διαφορετικά επιστρέφει **null**. * ''public File[] listFiles()'' : Επιστρέφει ένα πίνακα από Files που περιέχει τα αντικείμενα File για τα περιεχόμενα αρχεία. Η συγκεκριμένη μέθοδος έχει νόημα μόνο εάν το αντικείμενο File αντιπροσωπεύει ένα directory. Διαφορετικά επιστρέφει **null**. * ''public boolean mkdir()'' : Δημιουργεί ένα νέο κενό directory στο 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.1459412231.txt.gz · Last modified: 2016/03/31 08:17 by doufexi