java:byte_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:byte_streams [2016/02/15 12:22]
gthanos [Χρησιμοποιώντας Byte Streams]
java:byte_streams [2016/02/15 13:01]
gthanos [Σε ποιες περιπτώσεις να μην χρησιμοποιείτε τα Byte Streams]
Line 46: Line 46:
 ==== Πάντα να κλείνετε τα Streams ==== ==== Πάντα να κλείνετε τα Streams ====
  
-Το κλείσιμο ενός stream όταν δεν είναι πλέον αναγκαίo είναι πολύ σημαντικό. ​Τόσο ​σημαντικό ώστε το //​CopyBytes//​ χρησιμοποιεί ένα //​τελικό//​ block για να εγγυηθεί ότι και τα δύο stream θα κλείσουν ακόμα και αν παρουσιαστεί κάποιο σφάλμα. Η πρακτική αυτή βοηθά στην αποφυγή σοβαρών διαρροών πόρων.+Το κλείσιμο ενός stream όταν δεν είναι πλέον αναγκαίo είναι πολύ σημαντικό. ​Η κλάση //​CopyBytes//​ χρησιμοποιεί ένα //​τελικό//​ block για να εγγυηθεί ότι και τα δύο stream θα κλείσουν ακόμα και αν παρουσιαστεί κάποιο σφάλμα. Η πρακτική αυτή βοηθά στην αποφυγή σοβαρών διαρροών πόρων.
  
-Ένα πιθανό σφάλμα είναι ότι το //​CopyBytes//​ δεν μπόρεσε να ανοίξει το ένα ή και τα δύο αρχεία. Σε αυτή την περίπτωση θα παραχθεί ένα //I/O Exception//​. Όταν συμβαίνει αυτό, η stream μεταβλητή που αντιστοιχεί στο αρχείο ​δεν ​αλλάζει ποτέ από ​την ​αρχική null τιμή ​του. Αυτός είναι ο λόγος για τον οποίο ​το //​CopyBytes//​ φροντίζει ώστε κάθε stream μεταβλητή να περιέχει μια αναφορά αντικειμένου πριν από την κλήση του //close//.+Ένα πιθανό σφάλμα είναι ότι το //​CopyBytes//​ δεν μπόρεσε να ανοίξει το ένα ή και τα δύο αρχεία. Σε αυτή την περίπτωση θα παραχθεί ένα //I/O Exception//​. Όταν συμβαίνει αυτό, η stream μεταβλητή που αντιστοιχεί στο αρχείο ​θα έχει την τιμή ​**null**. Αυτός είναι ο λόγος για τον οποίο ​η κλάση ​//​CopyBytes//​ φροντίζει ώστε κάθε stream μεταβλητή να περιέχει μια αναφορά αντικειμένου πριν από την κλήση του //close//.
  
 ==== Σε ποιες περιπτώσεις να μην χρησιμοποιείτε τα Byte Streams ==== ==== Σε ποιες περιπτώσεις να μην χρησιμοποιείτε τα Byte Streams ====
  
-Το //​CopyBytes//​ φαίνεται σαν ένα φυσιολογικό πρόγραμμα,​ αλλά αποτελεί στην πραγματικότητα ένα είδος I/O χαμηλού επιπέδου που θα πρέπει να αποφεύγετε. ​Δεδομένου ότι το //​xanadu.txt//​ περιέχει δεδομένα χαρακτήρων,​ η καλύτερη προσέγγιση είναι να χρησιμοποιήσετε [[java:​character_streams|streams χαρακτήρων]],​ όπως αναλύεται στην επόμενη ενότητα. Υπάρχουν επίσης streams για πιο πολύπλοκους τύπους δεδομένων. Τα byte streams θα πρέπει να χρησιμοποιούνται μόνο για ​πιο primitive I/O. Τέλος, κάτι που πρέπει ​να θυμόμαστε για τα byte streams είναι ότι όλα τα άλλα είδη stream είναι βασισμένα πάνω τους.+Δεδομένου ότι το //​xanadu.txt//​ περιέχει δεδομένα χαρακτήρων,​ η καλύτερη προσέγγιση είναι να χρησιμοποιήσετε [[java:​character_streams|streams χαρακτήρων]],​ όπως αναλύεται στην επόμενη ενότητα. Υπάρχουν επίσης streams για πιο πολύπλοκους τύπους δεδομένων. Τα byte streams θα πρέπει να χρησιμοποιούνται μόνο για ​ανάγνωση και εγγραφή από και προς δυαδικά αρχεία. ​
  
 |Προηγούμενο:​ [[:​java:​file_io_intro | Είσοδος και έξοδος αρχείων ]]| Επόμενο:​ [[:​java:​character_streams | Streams Χαρακτήρων]] | |Προηγούμενο:​ [[:​java:​file_io_intro | Είσοδος και έξοδος αρχείων ]]| Επόμενο:​ [[:​java:​character_streams | Streams Χαρακτήρων]] |
  
java/byte_streams.txt · Last modified: 2016/02/26 11:15 (external edit)