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 File f=new File(args[0]);
if (!f.exists()|| !f.canRead()) { System.out.println("Can't read "+f); return; } if (f.isDirectory()) String[] files=f.list(); for(int i=0;i<files.length;i++) System.out.println(files[i]);

9 import java.io.*; class ListIt { public static void main (String [] args)throws Exception File f=new File(args[0]); if (!f.exists()|| !f.canRead()) System.out.println("Can't read "+f); return; } if (f.isDirectory()) String[] files=f.list(); for(int i=0;i<files.length;i++) System.out.println(files[i]);

10 else try { FileInputStream fis=new FileInputStream(f); byte[] data=new byte[(int)f.length()]; int len=0, pos=0; while (pos<f.length()) pos+=fis.read(data,pos,(int)f.length()-pos); String s=new String(data); System.out.println(s); } catch (FileNotFoundException e) System.out.println("File Disappeared");

11 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));}

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

13 ByteArrayOutputStream
HexDump(InputStream fis) { try // Lesen eines endlichen 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);} }

14 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.

15 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

16 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");}

17 BufferedReader

18 Beispiel Reader 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()); System.out.println(new String(data)); } catch (Exception e) System.out.println("File Disappeared");

19 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); }

20 Streamklassen

21

22

23 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