Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java I/O Input / Output stream Library

Ähnliche Präsentationen


Präsentation zum Thema: "Java I/O Input / Output stream Library"—  Präsentation transkript:

1 Java I/O Input / Output stream Library
Regelt I/O über verschiedene Kanäle Filesystem Console Netzwerk Intern Führt notwendige Umwandlungen/Konvertierungen aus

2 Furchtbar viele Klassen

3 Hierarchie der Klassen von java.io
zwei abstrakte Klassen InputStream OutputStream Streams, die Bytes transportieren, z.B.: FileInputStream / FileOutputStream ByteArrayInputStream / ByteArrayOutputStream FilterStreams, Streams mit Verarbeitung (Konvertierungen, Serialisierung/Deserialisierung von Objekten, Pufferung z.B.: DataInputStream PrintStream BufferedInputStream

4 InputStream/Outputstream
Abstrakte Klassen stellen die elementare Funktionalität bereit Quelle/ Senke der Informationsübertragung sind noch völlig offen Sie finden immer dort Anwendung, wenn verschiedene Informationskanäle genutzt werden sollen. Hinter einem InputStream kann sich ein beispielsweise ein FileInputStream oder NetzwerkStream verbergen

5 Bytes transportierende Streams

6 InputSteam – die wichtigsten Funktionen

7 Die Klasse File Klasse zur Ermittlung der Eigenschaften von Dateien
Die Eigenschaften einer Datei ist nicht im Objekt abgelegt, sondern werden beim System erfragt long length(); boolean isDirectory(); boolean isFile(); boolean canRead(); String[] listFiles(); String[] list();

8

9 Lesen von Daten bekannter Länge
FileInputStream fis=new FileInputStream(f); int len=(int)f.length(); System.out.println("Length: "+len); byte[] data=new byte[len]; // Lesen der Daten bei (sehr) kleinen Dateien // mit einer read-Operation // fis.read(data,0,(int)f.length()); int lenr=0; // Stream lesen, wenn die Laenge bekannt ist while (lenr<len) {lenr+=fis.read(data,lenr,len); System.out.println(new String(data,0,len));}

10 http://ecx. images-amazon. com/images/I/51VnGeBwoFL

11 ByteArrayOutputStream
HexDump(InputStream fis) { try // Lesen eines Streams unbekannter Laenge // Lesen der Daten in Datenpuffer (buf) // Schreiben der Daten nach ByteArrayOutputStream, // der mit den Daten waechst ByteArrayOutputStream bos=new ByteArrayOutputStream(1024); byte buf[]=new byte[1024]; int lenr; while ((lenr=fis.read(buf))>-1) bos.write(buf,0,lenr); data=bos.toByteArray(); }catch(Exception e){System.out.println(e);} }

12 Die Klasse DataInputStream
Gehört zur Gruppe der Filterstreams Typische Funktionen sind readInt, readLong, readDouble usw. int readInt(); Der Eingabestrom muss natürlich entsprechende Daten enthalten Zur Eingabe von Text sollte man Funktionen der Klasse Reader verwenden.

13 DataOutputStream class DataIOStream { public static void main(String args[])throws Exception FileOutputStream fout=new FileOutputStream("d.bin"); DataOutputStream dout=new DataOutputStream(fout); for (String s:args) dout.writeLong(Long.parseLong(s)); dout.close(); } -> java DataIOStream -> hexdump -C data.bin c ff ff Java speichert in der Byteorder big endian!! - x86: Little endian

14 class DataIOStream { public static void main(String args[])throws Exception FileOutputStream fout=new FileOutputStream("data.bin"); DataOutputStream dout=new DataOutputStream(fout); for (String s:args) dout.writeLong(Long.parseLong(s)); dout.close(); FileInputStream fis=new FileInputStream("data.bin"); DataInputStream di=new DataInputStream(fis); long l; try while(true) l=di.readLong(); System.out.println(l); } catch (EOFException e) {System.out.println("EOF reached");}

15 BufferedReader

16 Beispiel Reader { // FileInputStream fis=new FileInputStream(f);
try { // FileInputStream fis=new FileInputStream(f); // InputStreamReader R=new InputStreamReader(fis); FileReader R=new FileReader(f); char[] data=new char[(int)f.length()]; R.read(data,0,(int)f.length()); Ret=new String(data); } catch (Exception e) System.out.println("File Disappeared");

17 Text Zeilenweise lesen
File F=new File("......ml/SwitchPollin.html"); String Line; BufferedReader bf=new BufferedReader(new FileReader(F)); while((Line=bf.readLine())!=null) { out.println(Line); }

18 Streamklassen

19

20

21 import java. io. ; // http://openbook. galileocomputing
public class ReadGifSizeCatchingExceptions {   public static void main( String[] args )   { RandomAccessFile f=null;     try     {       f = new RandomAccessFile( "duke.gif", "r" );       f.seek( 6 );       System.out.printf( "%s x %s Pixel%n", f.read() + f.read() * 256,                          f.read() + f.read() * 256 );       f.close();     }     catch ( FileNotFoundException e )       System.err.println( "Datei ist nicht vorhanden!" );     catch ( IOException e )       System.err.println( "Allgemeiner Ein-/Ausgabefehler!" ); finally if ( f != null ) try { f.close(); } catch ( IOException e ) { } }   }


Herunterladen ppt "Java I/O Input / Output stream Library"

Ähnliche Präsentationen


Google-Anzeigen