1. OutputStream
klasse
Vi har nylig utforsket inndatastrømmer. Det er på tide å snakke om utgangsstrømmer.
Klassen OutputStream
er overordnet klasse for alle klasser som støtter byteutdata. Dette er en abstrakt klasse som ikke gjør noe alene, men den har etterkommerklasser for enhver anledning.
Det høres ekstremt komplisert ut. For å si det enklere, opererer denne klassen på bytes, og ikke for eksempel tegn eller andre datatyper. Og det at den er abstrakt betyr at vi vanligvis ikke bruker den, men heller en av dens etterkommerklasser. For eksempel FileOutputStream
og lignende.
Men tilbake til OutputStream
klassen. Denne klassen har metoder som alle dens etterkommerklasser må implementere. Her er de viktigste:
Metoder | Beskrivelse |
---|---|
|
Skriver én byte (ikke en int ) til strømmen. |
|
Skriver en rekke byte til strømmen |
|
Skriver en del av en rekke byte til strømmen |
|
Skriver alle data som er lagret i bufferen til strømmen |
|
Lukker strømmen |
Når du oppretter et objekt av en klasse som arver InputStream
, spesifiserer du vanligvis et kildeobjekt som InputStream
leser data fra. Når du oppretter et objekt av en klasse som arver OutputStream
, spesifiserer du vanligvis også målobjektet eller strømmen som data skal skrives til.
La oss kort gå gjennom alle metodene i klassen OutputStream
:
write(int b)
metode
Denne metoden skriver en byte (ikke en int
) til utdatastrømmen. Den beståtte verdien castes til en byte, og int-ens tre første byte forkastes.
write(byte[] buffer)
metode
Skriver den gitte matrisen med byte til utdatastrømmen. Det er det.
write(byte[] buffer, int offset, int length)
metode
Skriver en del av den beståtte rekken av byte til utdatastrømmen. Forskyvningsvariabelen indikerer indeksen til det første elementet i matrisen, og length
er lengden på delsettet som skal skrives.
flush()
metode
Metoden flush()
brukes til å tvinge alle data som potensielt er bufret i den gjeldende strømmen til å skrives til målstrømmen. Dette er relevant ved bruk av buffering og/eller flere strømobjekter arrangert i en kjede.
close()
metode
Skriver alle uskrevne data til målobjektet. Metoden close()
trenger ikke kalles hvis du bruker en try-with-resources
blokk.
Eksempel på kopiering av en fil
Kode | Merk |
---|---|
|
InputStream for å lese fra en fil OutputStream for å skrive til en fil Buffer som vi skal lese dataene inn i Så lenge det er data i strømmen Les data inn i bufferen Skriv dataene fra bufferen til den andre strømmen |
2. Writer
klasse
Klassen Writer
er nøyaktig den samme som OutputStream
klassen, men bare én forskjell igjen: den fungerer med tegn ( char
) i stedet for byte.
Dette er en abstrakt klasse: du kan ikke lage objekter av Writer
klassen. Hovedmålet er å være en felles foreldreklasse for hundrevis av etterkommerklasser og å gi dem vanlige metoder for å jobbe med karakterstrømmer.
Metoder for Writer
klassen (og alle dens etterkommerklasser):
Metoder | Beskrivelse |
---|---|
|
Skriver ett tegn (ikke et int ) til strømmen. |
|
Skriver en rekke tegn til strømmen |
|
Skriver en del av en rekke tegn til strømmen |
|
Skriver en streng til strømmen |
|
Skriver en del av en streng til strømmen |
|
Skriver alle data som er lagret i bufferen til strømmen |
|
Lukker strømmen |
Metodene ligner veldig på metodene i OutputStream
klassen, men de fungerer med tegn i stedet for byte.
Beskrivelse av metoder:
write(int b)
metode
Denne metoden skriver et enkelt tegn ( char
— ikke et int
) til utdatastrømmen. Den beståtte verdien kastes til en char
, og de to første bytene forkastes.
write(char[] buffer)
metode
Skriver den gitte rekken av tegn til utdatastrømmen.
write(char[] buffer, int offset, int length)
metode
Skriver en del av den beståtte rekken av tegn til utdatastrømmen. Variabelen offset
indikerer indeksen til det første elementet i matrisen, og length
er lengden på delsettet som skal skrives.
write(String str)
metode
Skriver den gitte strengen til utdatastrømmen.
write(String str, int offset, int length)
metode
Skriver en del av den gitte strengen til utdatastrømmen: strengen konverteres til en rekke tegn. Variabelen offset
indikerer indeksen til det første elementet i matrisen, og length
er lengden på delsettet som skal skrives.
flush()
metode
Metoden flush()
brukes til å tvinge alle data som potensielt er bufret i den gjeldende strømmen til å skrives til målstrømmen. Dette er relevant ved bruk av buffering og/eller flere strømobjekter arrangert i en kjede.
close()
metode
Skriver alle uskrevne data til målobjektet. Metoden close()
trenger ikke kalles hvis du bruker en try-with-resources
blokk.
Eksempel på et program som kopierer en tekstfil:
Kode | Merk |
---|---|
|
Reader for å lese fra en fil Writer for å skrive til en fil Buffer som vi skal lese dataene inn i Så lenge det er data i strømmen Les data inn i en buffer Skriv dataene fra bufferen til den andre strømmen |
StringWriter
klasse
Det er en annen interessant klasse som arver Writer
klassen: den heter StringWriter
. Den inneholder en foranderlig streng - et StringBuffer
objekt. Og hver gang du "skriver" noe til objektet StringWriter
, blir teksten ganske enkelt lagt til den interne bufferen.
Eksempel:
Kode | Merk |
---|---|
|
En måltegnstrøm ( StringWriter ) opprettes En streng skrives til bufferen inne i StringWriter En streng skrives til bufferen inne i StringWriter Konvertering av innholdet i et objekt til en streng |
I dette tilfellet StringWriter
er klassen i hovedsak en innpakning over StringBuffer
klassen, men StringWriter
klassen er en etterkommer av Writer
strømklassen, og den kan brukes i kjeder av strømobjekter. Dette er en ganske nyttig egenskap i praksis.
GO TO FULL VERSION