java:byte_streams
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| java:byte_streams [2020/03/05 12:58] – [Χρησιμοποιώντας Byte Streams] gthanos | java:byte_streams [2020/03/09 07:27] (current) – [Buffered Streams] 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 είναι πάντα η βελτιστοποίηση της απόδοσης κατά την ανάγνωση ή εγγραφή. Για παράδειγμα, | ||
| + | </ | ||
| + | |||
| + | |Προηγούμενο: | ||
java/byte_streams.1583413110.txt.gz · Last modified: 2020/03/05 12:58 by gthanos
