1. OutputStream
klasse
Vi har for nylig udforsket inputstrømme. Det er tid til at tale om outputstrømme.
Klassen OutputStream
er den overordnede klasse for alle klasser, der understøtter byte-output. Dette er en abstrakt klasse, der ikke gør noget alene, men den har efterkommerklasser til enhver lejlighed.
Det lyder ekstremt kompliceret. For at sige det mere enkelt, så opererer denne klasse på bytes, og ikke for eksempel tegn eller andre datatyper. Og det faktum, at det er abstrakt, betyder, at vi normalt ikke bruger det, men derimod en af dets efterkommerklasser. For eksempel FileOutputStream
og lignende.
Men tilbage til OutputStream
klassen. Denne klasse har metoder, som alle dens efterkommerklasser skal implementere. Her er de vigtigste:
Metoder | Beskrivelse |
---|---|
|
Skriver en byte (ikke en int ) til strømmen. |
|
Skriver et array af bytes til strømmen |
|
Skriver en del af et array af bytes til strømmen |
|
Skriver alle data gemt i bufferen til streamen |
|
Lukker strømmen |
Når du opretter et objekt af en klasse, der arver InputStream
, angiver du normalt et kildeobjekt, som InputStream
læser data fra. Når du opretter et objekt af en klasse, der arver OutputStream
, angiver du normalt også det målobjekt eller den strøm, som data vil blive skrevet til.
Lad os kort gennemgå alle klassens metoder OutputStream
:
write(int b)
metode
Denne metode skriver en byte (ikke en int
) til outputstrømmen. Den beståede værdi castes til en byte, og int'ens første tre bytes kasseres.
write(byte[] buffer)
metode
Skriver det givne array af bytes til outputstrømmen. Det er det.
write(byte[] buffer, int offset, int length)
metode
Skriver en del af det overførte array af bytes til outputstrømmen. Forskydningsvariablen angiver indekset for det første element i arrayet og length
er længden af den delmængde, der skal skrives.
flush()
metode
Metoden flush()
bruges til at tvinge alle data, der potentielt er bufferet i den aktuelle strøm, til at blive skrevet til målstrømmen. Dette er relevant, når der bruges buffering og/eller flere stream-objekter arrangeret i en kæde.
close()
metode
Skriver alle uskrevne data til målobjektet. Metoden close()
behøver ikke kaldes, hvis du bruger en try-with-resources
blok.
Eksempel på kopiering af en fil
Kode | Bemærk |
---|---|
|
InputStream til læsning fra en fil OutputStream til skrivning til en fil Buffer, hvori vi vil læse dataene Så længe der er data i strømmen Læs data ind i bufferen Skriv dataene fra bufferen til den anden strøm |
2. Writer
klasse
Klassen Writer
er nøjagtig den samme som OutputStream
klassen, men kun én forskel igen: den fungerer med tegn ( char
) i stedet for bytes.
Dette er en abstrakt klasse: du kan ikke oprette objekter i Writer
klassen. Dens hovedmål er at være en fælles forældreklasse for hundredvis af efterkommerklasser og at give dem fælles metoder til at arbejde med karakterstrømme.
Klassens metoder Writer
(og alle dens efterkommerklasser):
Metoder | Beskrivelse |
---|---|
|
Skriver et tegn (ikke et int ) til strømmen. |
|
Skriver en række tegn til strømmen |
|
Skriver en del af en række tegn til strømmen |
|
Skriver en streng til strømmen |
|
Skriver en del af en streng til strømmen |
|
Skriver alle data gemt i bufferen til streamen |
|
Lukker strømmen |
Metoderne minder meget om klassens metoder OutputStream
, men de arbejder med tegn i stedet for bytes.
Beskrivelse af metoder:
write(int b)
metode
Denne metode skriver et enkelt tegn ( char
— ikke et int
) til outputstrømmen. Den beståede værdi castes til a char
, og de første to bytes kasseres.
write(char[] buffer)
metode
Skriver den givne række af tegn til outputstrømmen.
write(char[] buffer, int offset, int length)
metode
Skriver en del af det beståede array af tegn til outputstrømmen. Variablen offset
angiver indekset for det første element i arrayet og length
er længden af den delmængde, der skal skrives.
write(String str)
metode
Skriver den givne streng til outputstrømmen.
write(String str, int offset, int length)
metode
Skriver en del af den givne streng til outputstrømmen: strengen konverteres til et array af tegn. Variablen offset
angiver indekset for det første element i arrayet og length
er længden af den delmængde, der skal skrives.
flush()
metode
Metoden flush()
bruges til at tvinge alle data, der potentielt er bufferet i den aktuelle strøm, til at blive skrevet til målstrømmen. Dette er relevant, når der bruges buffering og/eller flere stream-objekter arrangeret i en kæde.
close()
metode
Skriver alle uskrevne data til målobjektet. Metoden close()
behøver ikke kaldes, hvis du bruger en try-with-resources
blok.
Eksempel på et program, der kopierer en tekstfil:
Kode | Bemærk |
---|---|
|
Reader til læsning fra en fil Writer til skrivning til en fil Buffer, hvori vi vil læse dataene Så længe der er data i strømmen Læs data i en buffer Skriv dataene fra bufferen til den anden strøm |
StringWriter
klasse
Der er en anden interessant klasse, der arver Writer
klassen: den hedder StringWriter
. Den indeholder en foranderlig streng - et StringBuffer
objekt. Og hver gang du "skriver" noget til objektet StringWriter
, tilføjes teksten simpelthen til dens interne buffer.
Eksempel:
Kode | Bemærk |
---|---|
|
En måltegnstrøm ( StringWriter ) oprettes En streng skrives til bufferen inde i StringWriter en streng skrives til bufferen inde i StringWriter Konvertering af indholdet af et objekt til en streng |
I dette tilfælde StringWriter
er klassen i det væsentlige en indpakning over StringBuffer
klassen, men StringWriter
klassen er en efterkommer af Writer
stream-klassen, og den kan bruges i kæder af stream-objekter. Dette er en ret nyttig egenskab i praksis.
GO TO FULL VERSION