User Tools

Site Tools


java:character_streams

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:character_streams [2017/02/07 11:36]
gthanos [Χρησιμοποιώντας Streams Xαρακτήρων]
java:character_streams [2021/04/04 16:20]
Line 1: Line 1:
-====== Ροές Χαρακτήρων (Character Streams) ====== 
  
-Η Java χρησιμοποιεί για την κωδικοποίηση χαρακτήρων τη σύμβαση Unicode. Οποιοδήποτε αρχείο περιέχει χαρακτήρες, για κάθε χαρακτήρα περιέχει την ισοδύναμη δυαδική μορφή του χαρακτήρα. Ένα character stream I/O μεταφράζει αυτόματα της δυαδικές τιμές σε unicode χαρακτήρες. 
- 
-==== Χρησιμοποιώντας Streams Xαρακτήρων ==== 
- 
-Όλες οι κλάσεις που περιγράφουν stream χαρακτήρων κατάγονται από τις κλάσεις [[https://docs.oracle.com/javase/7/docs/api/java/io/Reader.html|Reader]] και [[https://docs.oracle.com/javase/7/docs/api/java/io/Writer.html|Writer]]. Σε αναλογία και με τα byte streams που είδαμε προηγούμενα, υπάρχουν οι κλάσεις [[https://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html|FileReader]] και [[https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html|FileWriter]] που επιτρέπουν την ανάγνωση και την εγγραφή streams χαρακτήρων από/σε αρχείο. Το παρακάτω παράδειγμα της κλάσης //CopyCharacters// παρουσιάζει τις κλάσεις αυτές. 
- 
-<code java 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(); 
-      } 
-    } 
-  } 
-} 
-</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 του. 
- 
- 
-<WRAP tip 80% center round> 
-Τα streams χαρακτήρων είναι «περιτυλίγματα» των byte streams. Κάθε stream χαρακτήρων χρησιμοποιεί το byte stream για την εκτέλεση της φυσικής I/O, ενώ το stream χαρακτήρων χειρίζεται τη μετάφραση μεταξύ των χαρακτήρων και bytes. Η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/FileReader.html|FileReader]], για παράδειγμα, χρησιμοποιεί την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html|FileInputStream]], ενώ η [[https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html|FileWriter]] χρησιμοποιεί την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html|FileOutputStream]]. 
-</WRAP> 
- 
- 
- 
-|Προηγούμενο: [[:java:byte_streams | Ροές Δεδομένων ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[java:formatting | Μορφοποίηση Εξόδου ]]| 
java/character_streams.txt · Last modified: 2021/04/04 16:20 (external edit)