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
Next revision Both sides next revision
java:byte_streams [2015/03/10 11:49]
gthanos [Σε ποιες περιπτώσεις να μην χρησιμοποιείτε τα Byte Streams]
java:byte_streams [2016/02/15 12:23]
gthanos [Πάντα να κλείνετε τα Streams]
Line 40: Line 40:
 </​code> ​ </​code> ​
  
-To //​CopyBytes//​ περνάει τον περισσότερο χρόνο ​του ​σε ένα ​απλό ​βρόχο που διαβάζει το ρεύμα εισόδου και γράφει το ρεύμα εξόδου,​ ένα byte τη φορά, όπως φαίνεται στην παρακάτω εικόνα.+Η μέθοδος main της κλάσης ​//​CopyBytes//​ περνάει τον περισσότερο χρόνο ​επεξεργασίας μέσα ​σε ένα βρόχο που διαβάζει ​από ​το ρεύμα εισόδου και γράφει ​στο ρεύμα εξόδου,​ ένα byte τη φορά, όπως φαίνεται στην παρακάτω εικόνα.
  
 {{ :​java:​bytestream.gif |}} {{ :​java:​bytestream.gif |}}
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 ====
java/byte_streams.txt · Last modified: 2016/02/26 11:15 (external edit)