| Both sides previous revision
Previous revision
Next revision
|
Previous revision
Next revision
Both sides next revision
|
java:character_streams [2020/03/09 20:59] gthanos |
java:character_streams [2020/03/09 21:02] gthanos |
| </code> | </code> |
| |
| Η κλάση //CopyCharacters// είναι παρόμοια με την κλάση //CopyBytes//. Η διαφορά είναι ότι η //CopyCharacters// χρησιμοποιεί τις κλάσεις [[https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html και [[https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html|FileWriter]] για είσοδο και έξοδο στη θέση των FileInputStream και FileOutputStream. Παρατηρήστε ότι τόσο η κλάση //CopyBytes// όσο και η κλάση //CopyCharacters// χρησιμοποιούν μια μεταβλητή int για να διαβάσουν και να γράψουν. Ωστόσο, στο //CopyCharacters//, η μεταβλητή int κρατά μια τιμή τύπου χαρακτήρα στα 16 τελευταία bit του ακεραίου, ενώ στο CopyBytes, η μεταβλητή int κρατά μια τιμή byte στα τελευταία 8 bit του ακεραίου. | Η κλάση //CopyCharacters// είναι παρόμοια με την κλάση //CopyBytes//. Η διαφορά είναι ότι η //CopyCharacters// χρησιμοποιεί τις κλάσεις [[https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html|FileReader]] και [[https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html|FileWriter]] για είσοδο και έξοδο στη θέση των FileInputStream και FileOutputStream. Παρατηρήστε ότι τόσο η κλάση //CopyBytes// όσο και η κλάση //CopyCharacters// χρησιμοποιούν μια μεταβλητή int για να διαβάσουν και να γράψουν. Ωστόσο, στο //CopyCharacters//, η μεταβλητή int κρατά μια τιμή τύπου χαρακτήρα στα 16 τελευταία bit του ακεραίου, ενώ στο CopyBytes, η μεταβλητή int κρατά μια τιμή byte στα τελευταία 8 bit του ακεραίου. |
| |
| ===== Διαβάζοντας και γράφοντας γραμμή-γραμμή σε αρχείο κειμένου ===== | ===== Διαβάζοντας και γράφοντας γραμμή-γραμμή σε αρχείο κειμένου ===== |
| Παραπάνω είδαμε την ανάγνωση και εγγραφή ενός χαρακτήρα σε κάθε κλήση των μεθόδων read και write. Προκειμένου να διαχειριζόμαστε περισσότερους χαρακτήρες σε κάθε κλήση των read και write, επιλέγουμε να διαβάζουμε και να γράφουμε ομάδες χαρακτήρων. | Παραπάνω είδαμε την ανάγνωση και εγγραφή ενός χαρακτήρα σε κάθε κλήση των μεθόδων read και write. Προκειμένου να διαχειριζόμαστε περισσότερους χαρακτήρες σε κάθε κλήση των read και write, επιλέγουμε να διαβάζουμε και να γράφουμε ομάδες χαρακτήρων. |
| |
| Μια συνηθισμένη ομαδοποίηση χαρακτήρων είναι γραμμή-γραμμή. Η γραμμή ορίζεται ως μία σειρά από χαρακτήρες με ένα χαρακτήρα αλλαγής γραμμής στο τέλος. Ο χαρακτήρας αλλαγής γραμμής μπορεί να είναι μια ακολουθία χαρακτήρων carriege return/line feed ('\r''\n') για το λειτουργικό σύστημα Windows, ένας χαρακτήρας carriege return ('\r'), ή ένας χαρακτήρας line feed ('\n') για το λειτουργικό σύστημα GNU/Linux. | Μια συνηθισμένη ομαδοποίηση χαρακτήρων είναι η ομαδοποίηση ανά γραμμή. Η γραμμή ορίζεται ως μία σειρά από χαρακτήρες με ένα χαρακτήρα αλλαγής γραμμής στο τέλος. Ο χαρακτήρας αλλαγής γραμμής μπορεί να είναι μια ακολουθία χαρακτήρων carriege return/line feed ('\r''\n') για το λειτουργικό σύστημα Windows, ένας χαρακτήρας carriege return ('\r'), ή ένας χαρακτήρας line feed ('\n') για το λειτουργικό σύστημα GNU/Linux. |
| |
| Ας τροποποιήσουμε το παράδειγμα //CopyCharacters// για να χρησιμοποιήσουμε I/O χαρακτήρων για να διαβάσουμε και να γράψουμε γραμμή-γραμμή. Για να το κάνουμε αυτό, θα πρέπει να χρησιμοποιήσουμε δύο κλάσεις που δεν έχουμε ξαναδεί, τις [[https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html|BufferedReader]] και [[https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html|PrintWriter]]. | Ας τροποποιήσουμε το παράδειγμα //CopyCharacters// για να διαβάσουμε και να γράψουμε γραμμή-γραμμή. Για να το κάνουμε αυτό, θα πρέπει να χρησιμοποιήσουμε δύο κλάσεις που δεν έχουμε ξαναδεί, τις [[https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html|BufferedReader]] και [[https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html|PrintWriter]]. |
| |
| Το παράδειγμα [[CopyLines]] επικαλείται τις [[http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()|BufferedReader.readLine]] και [[http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#println()|PrintWriter.println]] για να διαβάσει και να γράψει μία γραμμή αντιστοίχως. | Το παράδειγμα [[CopyLines]] επικαλείται τις [[http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()|BufferedReader.readLine]] και [[http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#println()|PrintWriter.println]] για να διαβάσει και να γράψει μία γραμμή αντιστοίχως. |