Java >> Java tutorial >  >> Tag >> class

SequenceInputStream-klasse i Java

1. Oversigt

I dette selvstudie lærer vi, hvordan du bruger SequenceInputStream klasse i Java. Især denne klasse er nyttig til at læse en række filer eller streams løbende.

For mere grundlæggende om Java IO og andre relaterede Java-klasser kan vi læse Java IO Tutorials.

2. Brug af SequenceInputStream Klasse

SequenceInputStream tager to eller flere InputStream genstande som kilder. Den læser fra den ene kilde efter den anden i den givne rækkefølge. Når den er færdig med at læse fra den første InputStream , begynder den automatisk at læse fra den anden. Denne proces fortsætter, indtil den er færdig med at læse fra alle kildestrømmene.

2.1. Objektoprettelse

Vi kan initialisere en SequenceInputStream ved at bruge to InputStream genstande :

InputStream first = new FileInputStream(file1);
InputStream second = new FileInputStream(file2);
SequenceInputStream sequenceInputStream = new SequenceInputStream(first, second);

Vi kan også instansiere det ved hjælp af en Optælling af InputStream genstande :

Vector<InputStream> inputStreams = new Vector<>();
for (String fileName: fileNames) {
    inputStreams.add(new FileInputStream(fileName));
}
sequenceInputStream = new SequenceInputStream(inputStreams.elements());

2.2. Læsning fra strømmen

SequenceInputStream giver to enkle metoder til at læse fra inputkilder. Den første metode læser en enkelt byte, mens den anden metode læser en række bytes.

At læse en enkelt byte med data , bruger vi read() metode:

int byteValue = sequenceInputStream.read();

I ovenstående eksempel returnerer læsemetoden den næste byte (0 – 255) værdi fra strømmen. Hvis streamen slutter, returnerer den -1 .

Vi kan også læse en række bytes :

byte[] bytes = new byte[100];
sequenceInputStream.read(bytes, 0, 50);

I eksemplet ovenfor står der 50 bytes og placerer dem fra indeks 0 .

2.3. Eksempel, der viser sekvenslæsning

To strenge tages som inputkilde for at demonstrere læsesekvensen:

InputStream first = new ByteArrayInputStream("One".getBytes());
InputStream second = new ByteArrayInputStream("Magic".getBytes());
SequenceInputStream sequenceInputStream = new SequenceInputStream(first, second);
StringBuilder stringBuilder = new StringBuilder();
int byteValue;
while ((byteValue = sequenceInputStream.read()) != -1) {
    stringBuilder.append((char) byteValue);
}
assertEquals("OneMagic", stringBuilder.toString());

Fra ovenstående eksempel, hvis vi udskriver stringBuilder.toString() det viser følgende output:

OneMagic

3. Konklusion

I denne korte artikel har vi set, hvordan man arbejder med SequenceInputStream . Den kombinerer bare alle underliggende inputstrømme i én enkelt strøm .

Et komplet kodeeksempel kan findes på GitHub.


Java tag