Java

Ein- und Ausgabe Ströme


String, StringBuffer

Zeichenketten mit der Klasse String.
Diese Objekte sind 'immutable', d.h. sie werden nie modifiziert, sondern immer neu erzeugt.

  String()
  String(String)
  String(StringBuffer)
  String(char[])

  char charAt(int)
  int compareTo(String)   // returns -1, 0, +1
  String concat(String)
  boolean endsWith(String)
  boolean equals(Object)
  boolean equalsIgnoreCase(String)
  void getChars(int srcb, int srce, char[] dst, int dstb)
  int indexOf(String)
  int length()
  String replace(char alt, char neu)   
  boolean startsWith(String)
  String substring(int von)
  String substring(int von, int bis)
  char[] toCharArray()
  String toLowerCase( . )
  String toUpperCase( . )
  String trim()
  String valueOf( . )

Zeichenketten mit der Klasse StringBuffer.
Diese Objekte sind veränderbar.

  StringBuffer()
  StringBuffer(String)
  StringBuffer(int)

  char charAt(int)
  void getChars(int srcb, int srce, char[] dst, int dstb)
  int capacity()
  int length()

  void setCharAt(int, char)
  void setLength(int)

  StringBuffer append( . )          // returns this
  StringBuffer insert(int, . )      // returns this
  StringBuffer delete(int, int)     // returns this
  StringBuffer deleteCharAt(int)    // returns this

  StringBuffer reverse()            // returns this
  String substring(int von)   
  String substring(int von, int bis) 

Math

Die Klasse Math stellt eine Reihe von nützlichen Konstanten und Methoden zur Verfügung.

  double E
  double Pi
 
  t abs( t )
  t max( t, t )
  t min( t, t )

  acos, asin, atan, atan2,  
  cos, exp, log, sin, sqrt, tan
  ceil, floor,
 
  double pow(double, double) 

  double random()

  int round(float)
  long round(double)

Hüllklassen: Byte, Short, Integer und Long, so wie Float und Double.
Super-Klasse: Number

Langzahl Arithmetik in java.lang.Number: BigInteger und BigDecimal.

Datenströme

Sämtlicher expliziter Datenaustausch in und aus der JVM (Java Virtual Machine) ist in sogenannte Datenströme organisiert:

Reader
Writer

Character Ströme

Input
Output

Byte Ströme

Typische verfügbare Methoden:

read() (lesen vom Datenstrom),
write() (schreiben in den Datenstrom),
close() (Datenstrom schliessen)

Beispiel: lesen von der Tastatur, schreiben auf den Bildschirm

import java.io.*;  

class TastaturLeser {  

   public static void main(String args[]) {  
      byte buffer[] = new byte[255];  
      System.out.println 
       ("\nSchreiben Sie eine Zeile Text ");  
      try {  
        System.in.read(buffer, 0, 255);  
      } catch (Exception e){  
         String err = e.toString();  
         System.out.println(err);  
      }  
      System.out.println("\nDie Zeile war: ");  
      String inputStr = new String(buffer, 0);  
      System.out.println(inputStr);  
      }  
}  

Beispiel: lesen und schreiben von Dateien

import java.io.*; 

public class Kopie { 

     public static void main(String[] args)  
                               throws IOException { 
        File inputFile = new File("liesmich.txt"); 
        File outputFile = new File("schreibmich.txt"); 

        FileReader in = new FileReader(inputFile); 
        FileWriter out = new FileWriter(outputFile); 
        int c; 

        while ((c = in.read()) != -1) 
        out.write(c); 

        in.close(); 
        out.close(); 
     } 
} 

Beispiel: lesen und schreiben im Netzwerk

import java.io.*; 
import java.net.*; 

public class KopierURL { 

  public static void main(String[] args) { 
    InputStream in = null;  
    OutputStream out = null; 
    try { 
      // überprüfe die Argumente 
      if ((args.length != 1) && (args.length != 2))  
        throw new IllegalArgumentException 
                           ("1 oder 2 Argumente!"); 
      // URL Objekt erzeugen 
      URL url = new URL(args[0]); 
      // Datenstrom dahin eröffnen 
      in = url.openStream();      
      // Falls 2 Argumente 
      if (args.length == 2) 
        // ... ist zweiteres der Dateiname ... 
        out = new FileOutputStream(args[1]); 
        // sonst stdout!        
      else out = System.out;                 

      // Puffer erzeugen für gezogene Bytes 
      byte[] buffer = new byte[4096]; 
      int bytes_read; 
      //solange was kommt weitermachen! 
      while((bytes_read = in.read(buffer)) != -1)   
        out.write(buffer, 0, bytes_read); 
    } 
    // Fehlerbehandlung  
    catch (Exception e) { 
      System.err.println(e); 
      System.err.println( 
         "Usage: java KopierURL URL [Datei]"); 
    } 
    finally {  
       try {  
          in.close(); 
          out.close();  
       } catch (Exception e) {} 
    } 
  } 
}

Benutzung:

  java KopierURL http://www.uni-mannheim.de/ [Datei] 

System

Die Klasse System stellt eine Reihe von Variablen und Klassen-Methoden zum plattform-unabhängigen Zugriff auf das Computersystem zur Verfügung.

  PrintStream err
  InputStream in
  PrintStream out
  
  void setErr(PrintStream)  
  void setIn(InputStream)  
  void setOut(PrintStream)  

  void arraycopy(Object, int, Object, int, int len)
  
  long currentTimeMillis()   // Zeit seit 1. Jan 1970

  void exit(int)
  void gc()

  Properties getProperties()
  String getProperty(String)
  String getProperty(String, String)
  void setProperties(Properties)
  
  SecurityManager getSecurityManager()
  void setSecurityManager(SecurityManager)

© Universität Mannheim, Rechenzentrum, 1998-2002.

Heinz Kredel

Last modified: Sat Dec 15 20:01:58 MET 2001