Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
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();
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
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 ) { } } }
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.