1. OutputStreamklasse
Vi har for nylig udforsket inputstrømme. Det er tid til at tale om outputstrømme.
Klassen OutputStreamer 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 FileOutputStreamog lignende.
Men tilbage til OutputStreamklassen. 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 InputStreamlæ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 lengther 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-resourcesblok.
Eksempel på kopiering af en fil
| Kode | Bemærk |
|---|---|
|
InputStreamtil læsning fra en fil OutputStreamtil 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. Writerklasse
Klassen Writerer nøjagtig den samme som OutputStreamklassen, 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 Writerklassen. 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 offsetangiver indekset for det første element i arrayet og lengther 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 offsetangiver indekset for det første element i arrayet og lengther 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-resourcesblok.
Eksempel på et program, der kopierer en tekstfil:
| Kode | Bemærk |
|---|---|
|
Readertil læsning fra en fil Writertil 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 |
StringWriterklasse
Der er en anden interessant klasse, der arver Writerklassen: den hedder StringWriter. Den indeholder en foranderlig streng - et StringBufferobjekt. 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 StringWriteren streng skrives til bufferen inde i StringWriterKonvertering af indholdet af et objekt til en streng |
I dette tilfælde StringWriterer klassen i det væsentlige en indpakning over StringBufferklassen, men StringWriterklassen er en efterkommer af Writerstream-klassen, og den kan bruges i kæder af stream-objekter. Dette er en ret nyttig egenskab i praksis.
GO TO FULL VERSION