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();
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
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 ) { } } }
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.