This is an old revision of the document!
Table of Contents
Ροές Χαρακτήρων (Character Streams)
Η Java χρησιμοποιεί για την κωδικοποίηση χαρακτήρων τη σύμβαση Unicode. Οποιοδήποτε αρχείο περιέχει χαρακτήρες, για κάθε χαρακτήρα περιέχει την ισοδύναμη δυαδική μορφή του χαρακτήρα. Ένα character stream I/O μεταφράζει αυτόματα της δυαδικές τιμές σε unicode χαρακτήρες.
Χρησιμοποιώντας Streams Xαρακτήρων
Όλες οι κλάσεις που περιγράφουν stream χαρακτήρων κατάγονται από τις κλάσεις Reader και Writer. Σε αναλογία και με τα byte streams που είδαμε προηγούμενα, υπάρχουν οι κλάσεις FileReader και FileWriter που επιτρέπουν την ανάγνωση και την εγγραφή streams χαρακτήρων από/σε αρχείο. Το παρακάτω παράδειγμα της κλάσης CopyCharacters παρουσιάζει τις κλάσεις αυτές.
- CopyCharacters.java
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class CopyCharacters { public static void main(String[] args) throws IOException { FileReader inputStream = null; FileWriter outputStream = null; try { String filename; if(args.length > 0) filename = args[0]; else filename = "xanadu.txt"; inputStream = new FileReader(filename); outputStream = new FileWriter("__"+filename); int c; while ((c = inputStream.read()) != -1) { outputStream.write(c); } } finally { if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } } }
Η κλάση CopyCharacters είναι παρόμοια με την κλάση CopyBytes. Η σημαντικότερη διαφορά είναι ότι η CopyCharacters χρησιμοποιεί τις κλάσεις FileWriter για είσοδο και έξοδο στη θέση των FileInputStream και FileOutputStream. Παρατηρήστε ότι τόσο η κλάση CopyBytes όσο και η κλάση CopyCharacters χρησιμοποιούν μια μεταβλητή int για να διαβάσουν και να γράψουν. Ωστόσο, στο CopyCharacters, η μεταβλητή int κρατά μια τιμή χαρακτήρα στα 16 τελευταία bit του, ενώ στο CopyBytes, η μεταβλητή int κρατά μια byte τιμή στα τελευταία 8 bit του.
Τα streams χαρακτήρων είναι «περιτυλίγματα» των byte streams. Κάθε stream χαρακτήρων χρησιμοποιεί το byte stream για την εκτέλεση της φυσικής I/O, ενώ το stream χαρακτήρων χειρίζεται τη μετάφραση μεταξύ των χαρακτήρων και bytes. Η κλάση FileReader, για παράδειγμα, χρησιμοποιεί την κλάση FileInputStream, ενώ η FileWriter χρησιμοποιεί την κλάση FileOutputStream.
Προηγούμενο: Ροές Δεδομένων | Περιεχόμενα | Επόμενο: Buffered I/O |