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