Σε αυτό το σεμινάριο, θα μάθουμε για την κλάση Java InputStream και τις μεθόδους της με τη βοήθεια ενός παραδείγματος.
Η InputStream
κλάση του java.io
πακέτου είναι μια αφηρημένη superclass που αντιπροσωπεύει μια ροή εισόδου bytes.
Εφόσον InputStream
είναι μια αφηρημένη τάξη, δεν είναι από μόνη της χρήσιμη. Ωστόσο, οι υποκατηγορίες του μπορούν να χρησιμοποιηθούν για την ανάγνωση δεδομένων.
Υποκατηγορίες του InputStream
Για να χρησιμοποιήσουμε τη λειτουργικότητα του InputStream
, μπορούμε να χρησιμοποιήσουμε τις υποκατηγορίες του. Κάποιοι από αυτούς είναι:
- FileInputStream
- ByteArrayInputStream
- ObjectInputStream
Θα μάθουμε για όλες αυτές τις υποκατηγορίες στο επόμενο σεμινάριο.
Δημιουργήστε ένα InputStream
Για να δημιουργήσουμε ένα InputStream, πρέπει java.io.InputStream
πρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο, εδώ είναι πώς μπορούμε να δημιουργήσουμε τη ροή εισόδου.
// Creates an InputStream InputStream object1 = new FileInputStream();
Εδώ, δημιουργήσαμε μια ροή εισόδου χρησιμοποιώντας FileInputStream
. Είναι επειδή InputStream
είναι μια αφηρημένη τάξη. Ως εκ τούτου δεν μπορούμε να δημιουργήσουμε ένα αντικείμενο InputStream
.
Σημείωση : Μπορούμε επίσης να δημιουργήσουμε μια ροή εισόδου από άλλες υποκατηγορίες του InputStream
.
Μέθοδοι του InputStream
Η InputStream
τάξη παρέχει διαφορετικές μεθόδους που εφαρμόζονται από τις υποκατηγορίες της. Ακολουθούν μερικές από τις κοινώς χρησιμοποιούμενες μεθόδους:
read()
- διαβάζει ένα byte δεδομένων από τη ροή εισόδουread(byte() array)
- διαβάζει byte από τη ροή και αποθηκεύει στον καθορισμένο πίνακαavailable()
- επιστρέφει τον αριθμό των διαθέσιμων byte στη ροή εισόδουmark()
- επισημαίνει τη θέση στη ροή εισόδου μέχρι την οποία έχουν διαβαστεί τα δεδομέναreset()
- επιστρέφει το στοιχείο ελέγχου στο σημείο της ροής όπου ορίστηκε το σήμαmarkSupported()
- ελέγχει εάν η μέθοδοςmark()
και ηreset()
μέθοδος υποστηρίζονται στη ροήskips()
- παραλείπει και απορρίπτει τον καθορισμένο αριθμό byte από τη ροή εισόδουclose()
- κλείνει τη ροή εισόδου
Παράδειγμα: InputStream χρησιμοποιώντας το FileInputStream
Εδώ είναι πώς μπορούμε να εφαρμόσουμε InputStream
χρησιμοποιώντας την FileInputStream
τάξη.
Ας υποθέσουμε ότι έχουμε ένα αρχείο με όνομα input.txt με το ακόλουθο περιεχόμενο.
This is a line of text inside the file.
Ας προσπαθήσουμε να διαβάσουμε αυτό το αρχείο χρησιμοποιώντας FileInputStream
(μια υποκατηγορία InputStream
).
import java.io.FileInputStream; import java.io.InputStream; public class Main ( public static void main(String args()) ( byte() array = new byte(100); try ( InputStream input = new FileInputStream("input.txt"); System.out.println("Available bytes in the file: " + input.available()); // Read byte from the input stream input.read(array); System.out.println("Data read from the file: "); // Convert byte array into string String data = new String(array); System.out.println(data); // Close the input stream input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Παραγωγή
Available bytes in the file: 35 Data read from the file: This is a line of text inside the file
Στο παραπάνω παράδειγμα, δημιουργήσαμε μια ροή εισόδου χρησιμοποιώντας την FileInputStream
κλάση. Η ροή εισόδου συνδέεται με το αρχείο input.txt .
InputStream input = new FileInputStream("input.txt");
Για να διαβάσετε δεδομένα από το αρχείο input.txt , έχουμε εφαρμόσει αυτές τις δύο μεθόδους.
input.read(array); // to read data from the input stream input.close(); // to close the input stream
Για να μάθετε περισσότερα, επισκεφθείτε το Java InputStream (επίσημη τεκμηρίωση Java).