This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
|
java:byte_streams [2020/03/05 12:58] gthanos [Χρησιμοποιώντας Byte Streams] |
java:byte_streams [2020/03/09 07:21] gthanos [Ροές Δυαδικών Δεδομένων] |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| Όλες οι κλάσεις που θα δούμε στη συνέχεια αυτής της ενότητας χρησιμοποιούν εσωτερικά **byte streams** για να εκτελέσουν είσοδο και έξοδο δεδομένων από αρχεία ή άλλες πηγές. Οι κλάσεις τύπου byte-stream είναι απόγονοι των κλάσεων **InputStream** και **OutputStream**. | Όλες οι κλάσεις που θα δούμε στη συνέχεια αυτής της ενότητας χρησιμοποιούν εσωτερικά **byte streams** για να εκτελέσουν είσοδο και έξοδο δεδομένων από αρχεία ή άλλες πηγές. Οι κλάσεις τύπου byte-stream είναι απόγονοι των κλάσεων **InputStream** και **OutputStream**. | ||
| - | Για να δείξουμε πώς δουλεύουν τα byte streams, θα ξεκινήσουμε από τις κλάσεις **[[http:// | + | Για να δείξουμε πώς δουλεύουν τα byte streams, θα ξεκινήσουμε από τις κλάσεις **[[http:// |
| ==== Χρησιμοποιώντας Byte Streams ==== | ==== Χρησιμοποιώντας Byte Streams ==== | ||
| - | Θα εξερευνήσουμε τις κλάσεις FileInputStream και FileOutputStream με χρήση του παρακάτω παραδείγματος // | + | Θα εξερευνήσουμε τις κλάσεις FileInputStream και FileOutputStream με χρήση του παρακάτω παραδείγματος // |
| <code java CopyBytes.java> | <code java CopyBytes.java> | ||
| Line 33: | Line 33: | ||
| - | ===== Διαβάζοντας και γράφοντας περισσότερα από ένα bytes από/σε δυαδικό αρχείο | + | ===== Διαβάζοντας και γράφοντας περισσότερα από ένα bytes ===== |
| Το παράδειγμα που είδαμε προηγουμένως το πρόγραμμα διαβάζει και γράφει ένα byte κάθε φορά. Παρακάτω θα δούμε το ίδιο πρόγραμμα, | Το παράδειγμα που είδαμε προηγουμένως το πρόγραμμα διαβάζει και γράφει ένα byte κάθε φορά. Παρακάτω θα δούμε το ίδιο πρόγραμμα, | ||
| Line 60: | Line 60: | ||
| </ | </ | ||
| - | Προκειμένου να μπορούμε να χειριζόμαστε περισσότερα δεδομένα σε κάθε κλήση συστήματος, | + | ===== Buffered Streams ===== |
| - | Παρακάτω θα ξαναγράψουμε το πρόγραμμα CopyBytes μόνο που | + | Στα παραπάνω streams, υπάρχει η δυνατότητα να χρησιμοποιήσετε επιπλέον buffered streams, δηλαδή streams |
| + | |||
| + | Παρακάτω δίνεται το προηγούμενο παράδειγμα χρησιμοποιώντας τις | ||
| <code java CopyBufferedBytes.java> | <code java CopyBufferedBytes.java> | ||
| Line 70: | Line 72: | ||
| public static void main(String[] args) throws IOException { | public static void main(String[] args) throws IOException { | ||
| - | | + | |
| - | BufferedOutputStream out = null; | + | |
| - | final int buffer_size = 256; | + | |
| - | byte []buffer = new byte[buffer_size]; | + | |
| - | try { | + | try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); |
| - | String | + | |
| - | if(args.length > 0) | + | |
| - | filename = args[0]; | + | |
| - | | + | |
| - | filename | + | |
| | | ||
| - | | + | |
| - | out = new BufferedOutputStream(new FileOutputStream(" | + | int length; |
| - | int size; | + | |
| - | while ((size = in.read(buffer, 0, buffer_size)) != -1) { | + | while ((length |
| - | out.write(buffer, 0, size); | + | System.out.println(length); |
| + | out.write(array, 0, length); | ||
| } | } | ||
| - | | + | } |
| - | if (in != null) { | + | |
| - | in.close(); | + | |
| - | } | + | |
| - | if (out != null) { | + | |
| - | out.close(); | + | |
| - | } | + | |
| - | | + | |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | |Προηγούμενο: | + | <WRAP tip 80% center round> |
| + | O ρόλος του buffer είναι πάντα η βελτιστοποίηση της απόδοσης. Για παράδειγμα, | ||
| + | </ | ||
| + | |||
| + | |Προηγούμενο: | ||