Avatar billede dresen Nybegynder
06. oktober 2005 - 19:06 Der er 16 kommentarer og
1 løsning

FilterInputStream, abstract eller ej ?

Hej eksperter

Jeg er ved at læse om java.io

I to af mine bøger omtales klassen FilterInputStream. I den ene bog omtales klassen som abstract, men det fremgår ikke af den anden.

Et opslag til nedenstående to steder, gør mig ikke klogere:

Her kan jeg ikke finde noget om abstract: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FilterInputStream.html

Her er den nævnt som abstract: http://www.epic.noaa.gov/~dwd/doc/java.io.FilterInputStream.html

Hvad gælder for klassen?

på forhånd tak :D
Avatar billede arne_v Ekspert
06. oktober 2005 - 19:34 #1
den er ikke static (dokumentationen passer)

men da dens eneste constructor er protected så kan du ikke instantiere en
Avatar billede arne_v Ekspert
06. oktober 2005 - 19:36 #2
Iøvrigt er det vist ikke en klasse man bruger en normal kode - jeg kan ikke erindre
nogensinde at have brugt den
Avatar billede dresen Nybegynder
06. oktober 2005 - 21:00 #3
Hej arne

Tak for svaret.

Vil det sige, at denne dokumentation er forkert eller er det mig der misforstår; "Abstract class representing
a filtered input stream of bytes" (http://www.epic.noaa.gov/~dwd/doc/java.io.FilterInputStream.html)

Jeg har snart brugt rigtig lang tid på at finde rundt i java io, og er efterhånden ved at være godt forvirret.
Dette decorator pattern er vist kun smart når man forstår det til fulde :(

Forhåbentlig kan du være en redningsplanke i dette vivar!!!

Det fremgår af de bøger jeg har og af eks. fundet på nettet, at man bruger Writer og subklasser af denne,
når der skriver character output. Alligevel vises mange eks., hvor der skrives tekst til filer
ved brug af ps = new PrintStream(new FileOutputStream("log.txt"));  -- og  --  ps.println("hej");

Dette forvirrer mig en del - hvorfor gøres dette med OutPutStreams???

Jeg har fundet dette link (http://ocw.mit.edu/OcwWeb/Civil-and-Environmental-Engineering/1-124JFall2000/LectureNotes/detail/file_io.htm#Output)
, hvor det både vises hvordan der skrives til en fil med OutputStreams og med Writers.

Endvidere beskrives det, hvordan der kan skabes 16 bit Readers af InputStreams og 16 bit Writers af OutputStreams.

Kan du gøre klart for mig, hvornår man bør bruge hvad, og hvad den grundlæggende forskel er mellem de to eks. der er på
at skrive til en fil i eks. her: http://ocw.mit.edu/OcwWeb/Civil-and-Environmental-Engineering/1-124JFall2000/LectureNotes/detail/file_io.htm#Output

Jeg håber ikke jeg presser citronen for meget med dette omfattende og måske noget rodede spørgsmål. Jeg vil meget gerne give
ekstra point for besvarelse af dette (en ringe tak).

på forhånd tak for hjælpen.

/dresen
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:05 #4
ja den er forkert

åbenlyst forkert fordi der ikke står abstract i det som er genereret udfra koden
men kun i den tekst som er menneskeskrevet i en kommentar
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:05 #5
public class FilterInputStream
extends InputStream

Abstract class representing a filtered input stream of bytes. This class is the basis for enhancing input stream functionality. It allows multiple input stream filters to be chained together, each providing additional functionality.

skulle have været


public abstract class FilterInputStream
extends InputStream

Abstract class representing a filtered input stream of bytes. This class is the basis for enhancing input stream functionality. It allows multiple input stream filters to be chained together, each providing additional functionality.

for at den var abstract
Avatar billede dresen Nybegynder
06. oktober 2005 - 21:07 #6
ok, tak - så er der en ting mindre til at forvirre :]

listen er stadig lang, kan du skubbe mig i gang ?

(tak for det ekstremt hurtige svar !!!)
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:08 #7
PrintStream og PrintWriter kan næsten det samme

Jeg tror at det er historisk: man lavede PrintStream i 1.0 og så tilføjede man
Reader og Writer klaserne i 1.1, men kunne naturligvis ikke fjerne PrintStream
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:08 #8
hvad mener du med 16 bit readers og writers ?
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:10 #9
for at citere mig selv (fra http://www.eksperten.dk/spm/653637):

Hvis du vil læse og skrive bytes så bruger du InputStream og OutputStream direkte.

Hvis du vil læse og skrivw tekst linier så bruger du BufferedReader og
PrintWriter/PrintStream.

Hvis du vil læse og skrive serialiserede objekter så bruger du ObjectInputStream
og ObjectOutputStream.

Hvis du vil skrive forskelle binære data typer så bruger du DataInputStream
og DataOutputStream.
Avatar billede dresen Nybegynder
06. oktober 2005 - 21:15 #10
jeg læser i dit gamle svar - tak for link !!
Avatar billede dresen Nybegynder
06. oktober 2005 - 21:21 #11
citat; "hvad mener du med 16 bit readers og writers ?"
....

It is possible to create a 16-bit Reader from an 8-bit InputStream using the InputStreamReader class e.g.

Reader r = new InputStreamReader(System.in);      // System.in is an example of an

Likewise, it is possible to create a 16-bit Writer from an 8-bit OutputStream using the OutputStreamWriter class e.g.

Writer w = new OutputStreamWriter(System.out);    // System.out is an example of an OutputStream.
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:23 #12
de må hentyde til at en Stream læser/skriver bytes (8 bit) mens en Reader/Writer
læser/skriver chars (16 bit)

det er ikke nogle udtryk jeg ville bruge
Avatar billede dresen Nybegynder
06. oktober 2005 - 21:34 #13
ok, det er taget til efterretning.

Du skriver følgende: .....læse og skrive tekst linier så bruger du BufferedReader og
PrintWriter/PrintStream.

Hvornår vælger man PrintWriter fremfor PrintStream ?!
Avatar billede arne_v Ekspert
06. oktober 2005 - 21:35 #14
efter min bedste overbevisning er det hip som hap

ofte har man en af dem og så er valget truffet for en

hvis man selv skal vælge så PrintWriter=krone og PrintStream=plat
Avatar billede mollevp Nybegynder
07. oktober 2005 - 00:22 #15
Hej dresen,
jeg ved ikke om du har set denne side, men jeg synes den forklarer forskellen på en Reader/Writer vs. InputStream/OutputStream og generelt steams og I/O ret godt..

http://java.sun.com/docs/books/tutorial/essential/io/index.html
Avatar billede dresen Nybegynder
13. oktober 2005 - 21:22 #16
Hej igen

Jeg har fundet ud af at bruge I/O i praksis, men har stadig lidt svært ved at finde ud af, hvordan man bevæger sig på tværs af hhv. reader vs. inputstream og writer vs. outputstream.

Arne jeg takker for din udholdenhed og forklaring. Jeg mener pointene bør tilfalde dig.

mollevp, tak for dit gode input. Det er et link, som jeg vil vende tilbage til. Er du interesseret i nogle ekstra point, opretter jeg gerne en ny tråd til dette.

mvh/ dresen
Avatar billede arne_v Ekspert
13. oktober 2005 - 21:25 #17
så ligger jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester