java:read_from_file
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:read_from_file [2017/02/07 11:33] – gthanos | java:read_from_file [2017/02/07 12:44] (current) – removed gthanos | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Παραδείγματα ανάγνωσης από αρχείο κειμένου - Η κλάση Scanner ====== | ||
- | Παρακάτω θα δούμε εναλλακτικούς τρόπους με τους οποίους μπορούμε να διαβάσουμε από ένα αρχείο κειμένου. Για τα παραδείγματα που ακολουθούν υποθέστε ότι καλούμαστε να διαβάσουμε το παρακάτω αρχείο που περιέχει τα ονόματα και τα τηλέφωνα ενός τηλεφωνικού καταλόγου. | ||
- | |||
- | <code txt telephone-list.txt> | ||
- | John Smith, 6944854544 | ||
- | Robert Parson, 6978456123 | ||
- | Nick Carlson, 6982147852 | ||
- | Barbara Miller, 6978852456 | ||
- | Max Taylor, 6936785412 | ||
- | </ | ||
- | |||
- | Τα οποία θέλουμε να τα αποθηκεύσουμε σε ένα πίνακα από αντικείμενα της παρακάτω κλάσης TelephoneNumber | ||
- | |||
- | <code java TelephoneNumber.java> | ||
- | public class TelephoneNumber { | ||
- | private String name; | ||
- | private String number; | ||
- | | ||
- | public TelephoneNumber(String newName, String newNumber) { | ||
- | name = newName; | ||
- | number = newNumber; | ||
- | } | ||
- | | ||
- | public String getName() { return name; } | ||
- | public String getNumber() { return number; } | ||
- | public void setName(String newName) { name = newName; } | ||
- | public void setNumber(String newNumber) { number = newNumber; } | ||
- | | ||
- | public String toString() { | ||
- | return "Name: " | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Διαβάζοντας γραμμή-γραμμή ===== | ||
- | |||
- | Ό πιο απλός τρόπος ανάγνωσης αρχείων κειμένου είναι το διάβασμα κάθε γραμμής ξεχωριστά και στη συνέχει η επεξεργασία της γραμμής, | ||
- | |||
- | <code java ReadLineByLine.java> | ||
- | import java.io.*; | ||
- | |||
- | public class ReadLineByLine { | ||
- | public static void main(String []args) { | ||
- | try { | ||
- | String input; | ||
- | int i=0; | ||
- | TelephoneNumber [] numbers = new TelephoneNumber[5]; | ||
- | BufferedReader in = new BufferedReader(new FileReader(" | ||
- | while( (input = in.readLine()) != null && input.length() > 0 ) { | ||
- | numbers[i++] = createTelephoneNumber(input); | ||
- | } | ||
- | System.out.println(" | ||
- | for(TelephoneNumber number : numbers) { | ||
- | System.out.println(number); | ||
- | } | ||
- | } catch( IOException ex ) { | ||
- | ex.printStackTrace(); | ||
- | } | ||
- | } | ||
- | | ||
- | public static TelephoneNumber createTelephoneNumber(String inputLine) { | ||
- | int commaPosition = inputLine.indexOf("," | ||
- | String name = inputLine.substring(0, | ||
- | String telephone = inputLine.substring( commaPosition+1 ).trim(); | ||
- | TelephoneNumber t = new TelephoneNumber(name, | ||
- | return t; | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Χρησιμοποιώντας την κλάση Scanner ===== | ||
- | |||
- | Εκτός από την δυνατότητα που έχετε να διαβάζετε γραμμή-γραμμή η Java σας δίνει την επιπλέον δυνατότητα να διαβάζετε συγκεκριμένους τύπους δεδομένων μέσω της κλάσης [[http:// | ||
- | |||
- | Οι μέθοδοι της κλάσης //Scanner// έχουν συνοπτικά ως εξής: | ||
- | |||
- | **Κατασκευαστές** | ||
- | * '' | ||
- | * '' | ||
- | |||
- | Ένα αρχείο μπορείτε να το ανοίξετε είτε με χρήση της κλάσης File που είδαμε νωρίτερα είτε με χρήση της κλάσης [[http:// | ||
- | |||
- | **Μέθοδοι** | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | * '' | ||
- | |||
- | ==== Παράδειγμα ανάγνωσης με χρήση της Scanner ==== | ||
- | |||
- | <code java ReadWithScanner.java> | ||
- | import java.util.Scanner; | ||
- | import java.io.File; | ||
- | |||
- | public class ReadWithScanner { | ||
- | public static void main(String []args) { | ||
- | String firstname=null, | ||
- | int i=0; | ||
- | TelephoneNumber numbers[] = new TelephoneNumber[5]; | ||
- | try { | ||
- | Scanner sc = new Scanner(new File(" | ||
- | | ||
- | while( sc.hasNext() ) { | ||
- | firstname = sc.next(); | ||
- | lastname = sc.next(); | ||
- | number = sc.next(); | ||
- | |||
- | if( lastname.charAt( lastname.length() -1 ) == ',' | ||
- | lastname = lastname.substring(0, | ||
- | |||
- | numbers[i++] = new TelephoneNumber(firstname+" | ||
- | } | ||
- | } catch(Exception ex) { | ||
- | ex.printStackTrace(); | ||
- | } | ||
- | for(TelephoneNumber telephoneNumber : numbers) { | ||
- | System.out.println(telephoneNumber); | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | <WRAP tip 80% center round> | ||
- | Το παραπάνω παράδειγμα θα μπορούσατε να το εκτελέσετε διαβάζοντας από την κονσόλα, | ||
- | <code java> | ||
- | Scanner sc = new Scanner(new File(" | ||
- | </ | ||
- | |||
- | με την γραμμή | ||
- | |||
- | <code java> | ||
- | Scanner sc = new Scanner(System.in); | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | | Προηγούμενο: |
java/read_from_file.1486467217.txt.gz · Last modified: 2017/02/07 11:33 (external edit)