This shows you the differences between two versions of the page.
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 ==== |