Exceptions: Parameterprüfung import java.io.ioexception;



Ähnliche Dokumente
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Java: Vererbung. Teil 3: super()

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Einführung in die Programmierung

Programmierkurs Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Übungen Programmieren 1 Felix Rohrer. Übungen

Einführung in Javadoc

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in die Programmierung für Wirtschaftsinformatik

Einführung in die Programmierung Blockkurs Java

Tagesprogramm

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Ausnahmen. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Programmieren in Java

Javakurs zu Informatik I. Henning Heitkötter

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Programmieren in Java

1 Vom Problem zum Programm

SEP 114. Design by Contract

Objektorientierte Programmierung

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Java Einführung Collections

Einführung in die Java- Programmierung

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

5. Tutorium zu Programmieren

public class SternchenRechteckGefuellt {

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Software Engineering Klassendiagramme Assoziationen

Java-Schulung Grundlagen

Studentische Lösung zum Übungsblatt Nr. 7

Bearbeiten elektronische Rechnungen (Invoices)

Test-Driven Design: Ein einfaches Beispiel

Java Kurs für Anfänger Einheit 5 Methoden

Client-Server-Beziehungen

Programmieren in Java

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Technische Dokumentation SilentStatistikTool

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Artikel Schnittstelle über CSV

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Barcodedatei importieren

Große Übung Praktische Informatik 1

1. Fehlende Zugriffsrechte für die Verwendung der VR -NetWorld Software

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Problemdefinition. Cash Flow Reminder. 1 Problembeschreibung: 2 Projektziel: 3 Aufgaben des Benutzers

Algorithmen und Datenstrukturen

Musterlösungen zur Klausur Informatik 3

Überblick. Lineares Suchen

Beispiel Time Client/Server

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

-Inhalte an cobra übergeben

Grundlagen von Python

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Arbeiten mit UMLed und Delphi

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Der lokale und verteilte Fall

Delegatesund Ereignisse

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Import und Export von Übergängern

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Programmieren I. Kapitel 15. Ein und Ausgabe

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Beispiel: DB-Mock (1/7)

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Durchführung der Datenübernahme nach Reisekosten 2011

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Adminer: Installationsanleitung

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Objektorientierte Programmierung

7. Übung zu Algorithmen und Datenstrukturen

Dokumentation IBIS Monitor

Benutzerverwaltung mit Zugriffsrechteverwaltung (optional)

LANiS Mailversender ( Version 1.2 September 2006)

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Transkript:

PPK2 Java Exceptions, Dateien Seite 1 von 31 Exceptions: Parameterprüfung import java.io.ioexception; public class Parameters public static String Methode(String str,exception obj,int index, String[] array) if(str==null) throw new NullPointerException("Par. str darf nicht null sein"); if(str.length()==0) throw new IllegalArgumentException( "Parameter str darf kein leerer String sein"); if(obj==null) throw new NullPointerException("Par. obj darf nicht null sein"); if(!(obj instanceof IOException)) throw new IllegalArgumentException("Parameter obj muß ein String oder eine Subklasse von String sein"); if(index<0 index>99) throw new IllegalArgumentException("Parameter index Muß im Bereich von 0 bis 99 liegen"); if(array==null) throw new NullPointerException("Par. array darf nicht null sein"); if(array.length==0) throw new IllegalArgumentException("Par. array muß El. enthalten");

PPK2 Java Exceptions, Dateien Seite 2 von 31 for(int i=0;i<array.length;i++) if(array[i]==null) throw new NullPointerException("Das Element am Index "+i+ " des Parameter array darf nicht null sein"); if(array.length<=index) throw new IllegalArgumentException("Parameter index referenziert ein Element außerhalb des Parameters array"); // Alle Parameter geprüft return "Ergebnis: "+str+" "+obj.tostring()+" "+index*5+ " "+array[index]; static public void main(string args[]) String ergebnis=null; // True solange Berechnung dauert (z. B. für Multithreading) boolean inberechnung=false; String[] arr="element1","element2","element3"; System.out.println("Programmstart\n\n"); try inberechnung=true; ergebnis=methode("",null,-5,null); inberechnung=false;

PPK2 Java Exceptions, Dateien Seite 3 von 31 catch(exception e) ergebnis="fehler: "+e.getmessage(); if(inberechnung) System.out.println("Noch in Berechnung"); System.out.println("Ergebnis 1: "+ergebnis+"\n"); ergebnis=null; inberechnung=false; try inberechnung=true; ergebnis=methode("string",new java.io.eofexception(),3,arr); catch(exception e) ergebnis="fehler: "+e.getmessage(); finally inberechnung=false; if(inberechnung) System.out.println("Noch in Berechnung"); System.out.println("Ergebnis 2: "+ergebnis+"\n");

PPK2 Java Exceptions, Dateien Seite 4 von 31 ergebnis=null; inberechnung=false; try inberechnung=true; ergebnis=methode("string",new java.io.eofexception(),2,arr); catch(exception e) ergebnis="fehler: "+e.getmessage(); finally inberechnung=false; if(inberechnung) System.out.println("Noch in Berechnung"); System.out.println("Ergebnis 3: "+ergebnis+"\n"); System.out.println("\nProgrammende");

PPK2 Java Exceptions, Dateien Seite 5 von 31 Testausdruck: Programmstart Noch in Berechnung Ergebnis 1: Fehler: Parameter str darf kein leerer String sein Ergebnis 2: Fehler: Parameter index referenziert Element außerhalb des Parameters array Ergebnis 3: Ergebnis: String java.io.eofexception 10 Element3 Programmende

PPK2 Java Exceptions, Dateien Seite 6 von 31 import java.io.*; public class ReRead Exception: ReRead public static void berechnen(long wert) throws WertAusserBereichException if(wert<0) throw new WertAusserBereichException("Der Wert ist zu klein. Erlaubter Bereich: 0-99"); if(wert>99) throw new WertAusserBereichException("Der Wert ist zu groß. Erlaubter Bereich: 0-99"); // Hier Wert verarbeiten static public void main(string args[]) System.out.println("Programmstart \n"); boolean erfolgreich=false; BufferedReader in=new BufferedReader( new InputStreamReader(System.in));

PPK2 Java Exceptions, Dateien Seite 7 von 31 do try System.out.print("Bitte Wert eingeben: "); // Wert einlesen, umwandeln und gleich verarbeiten berechnen(long.parselong(in.readline())); erfolgreich=true; catch(wertausserbereichexception e) System.out.println(e.getMessage()); catch(numberformatexception e) System.out.println("Sie haben keine Zahl eingegeben!"); catch(ioexception e) System.out.println("Fehler beim lesen: "+e.getmessage()); // Würde erlauben, weiter außen noch aufzuräumen // (z. B. in finally) throw new RuntimeException("Nicht behebbarer Fehler! Programm wird abgebrochen."); // Oder anders: while(!erfolgreich); System.out.println("\nProgrammende");

PPK2 Java Exceptions, Dateien Seite 8 von 31 class WertAusserBereichException extends Exception public WertAusserBereichException(String msg) super(msg); public WertAusserBereichException() super(); Testausdruck: Programmstart Bitte Wert eingeben: Wert Sie haben keine Zahl eingegeben! Bitte Wert eingeben: -5 Der Wert ist zu klein. Erlaubter Bereich: 0-99 Bitte Wert eingeben: 100 Der Wert ist zu groß. Erlaubter Bereich: 0-99 Bitte Wert eingeben: 13 Programmende

PPK2 Java Exceptions, Dateien Seite 9 von 31 Programm-Argumente lesen und prüfen import java.util.vector; import java.util.enumeration; public class Arguments static String dateiname; static int startindex; static boolean binaer=false; static boolean trace=false; static Vector suchstrings=null; /* "throws IllegalArgumentException" ist nicht nötig, da es sich hierbei um eine Subklasse von RuntimeException handelt -> unchecked */ static protected void parseparameter(string args[]) int nextindex=0; if(args.length<2) throw new IllegalArgumentException("Zu wenige Parameter!"); dateiname=args[nextindex++]; try startindex=integer.parseint(args[nextindex++]);

PPK2 Java Exceptions, Dateien Seite 10 von 31 catch(numberformatexception e) // Hier nötig, da wir im Hauptprogramm nur // IllegalArgumentException abfangen. // Alternative: Dort auch NumberFormatException prüfen throw new IllegalArgumentException("Startindex ungültig: "+ e.tostring()); // Vorsicht: Es müssen folgende Kombinationen akzeptiert werden: // -b -t, -t -b, -tb, -bt, -b, -t sowie die selben mit / statt - while(nextindex<args.length && (args[nextindex].startswith("-") args[nextindex].startswith("/"))) String param=args[nextindex].substring(1); while(param.length()>0) String option=param.substring(0,1); if(option.equalsignorecase("b")) binaer=true; else if(option.equalsignorecase("t")) trace=true; else throw new IllegalArgumentException("Option "+option+ " ist unbekannt!"); param=param.substring(1); nextindex++;

PPK2 Java Exceptions, Dateien Seite 11 von 31 // Die restlichen Argumente sind die Suchstrings. // Gibt es keine, soll der Vector nicht angelegt werden, // sondern null sein while(nextindex<args.length) if(suchstrings==null) suchstrings=new Vector(); suchstrings.addelement(args[nextindex++]); static public void main(string args[]) System.out.print("Übergebene Parameter als Gesamt-String:"); for(int i=0;i<args.length;i++) System.out.print(" "+args[i]); System.out.println(); try parseparameter(args); catch(illegalargumentexception e) System.out.println(e.getMessage()); Usage();

PPK2 Java Exceptions, Dateien Seite 12 von 31 System.out.println("Verarbeitung der Daten mit folgenden Werten:"); System.out.println("Dateiname: "+dateiname); System.out.println("Startindex: "+startindex); if(binaer) System.out.println("Binaer verarbeiten"); if(trace) System.out.println("Trace ausgeben"); if(suchstrings==null) System.out.println("Keine Suchstrings angegeben"); else int pos=1; for(enumeration e=suchstrings.elements();e.hasmoreelements();) System.out.println("Suchstring "+(pos++)+": "+ (String)e.nextElement()); private static void Usage() System.out.println("Aufruf: java Arguments dateiname startindex [-b] [-t] suchstring");

PPK2 Java Exceptions, Dateien Seite 13 von 31 Testausdruck: Übergebene Parameter als Gesamt-String: test.txt 23 -bt Wann Wo Verarbeitung der Daten mit folgenden Werten: Dateiname: test.txt Startindex: 23 Binaer verarbeiten Trace ausgeben Suchstring 1: Wann Suchstring 2: Wo

PPK2 Java Exceptions, Dateien Seite 14 von 31 import java.io.*; import java.util.date; public class Datei Die Klasse File static public void main(string args[]) if(args.length!=1 args[0].length()==0) System.out.println("Aufruf: java Datei Dateiname"); File f=new File(args[0]); if(!f.exists()) // datei/verzeichnis existiert nicht System.out.println("Die Datei "+args[0]+" exitsiert nicht."); // Vorsicht: Kann nicht immer in 1:1 in ein Datum umgewandelt // werden (keine Garantie!) System.out.println("Zuletzt verändert: "+new Date(f.lastModified()));

PPK2 Java Exceptions, Dateien Seite 15 von 31 /* Diese beiden Funktionen sind mit Vorsicht zu genießen! Werden / und \ gemischt verwendet, ergeben sich falsche Werte. Der Name ist nur dann richtig, wenn der letzte Pfad-Separator ein \ ist (genauer: der Variable separatorchar entspricht) */ // Pfad: Directories+Dateiname // Name: Nur Dateiname System.out.println("Pfad: "+f.getpath()+"\nname: "+f.getname()); // Die Länge eines Verzeichnisses ist 0! System.out.println("Länge: "+f.length()); if(f.isfile()) // Der kanonische Pfad kann einen Zugriff bedingen // und daher fehlschlagen! try System.out.println("Der kanonische Name der Datei ist "+ f.getcanonicalpath()); catch(ioexception e) System.out.println("Exception bei getcanonicalpath: "+ e.getmessage()); if(!f.canread()) System.out.println("Die Datei kann nicht gelesen werden");

PPK2 Java Exceptions, Dateien Seite 16 von 31 if(!f.canwrite()) System.out.println("Die Datei kann nicht geschrieben werden"); else if(f.isdirectory()) try System.out.println("Der kanonische Name des Verzeichnisses ist "+f.getcanonicalpath()); catch(ioexception e) System.out.println("Exception bei getcanonicalpath: "+ e.getmessage()); if(!f.canread()) System.out.println("Das Verzeichnis kann nicht gelesen werden"); if(!f.canwrite()) System.out.println("Das Verzeichnis kann nicht geschrieben werden");

PPK2 Java Exceptions, Dateien Seite 17 von 31 // Verzeichnis-Inhalt ausgeben: Wird als Array von // Strings (Dateiname) geliefert System.out.println("Inhalt des Verzeichnisses: "); String[] dateiliste=f.list(); for(int i=0;i<dateiliste.length-1;i++) System.out.print(dateiliste[i]+", "); System.out.println(dateiliste[dateiliste.length-1]); else // Beispiel: Unter Windows NT wenn auf Verzeichnis und Datei // alle außer Read-Rechten bestehen System.out.println("Seltsam: Weder Datei noch Verzeichnis???");

PPK2 Java Exceptions, Dateien Seite 18 von 31 Testausdruck: Zuletzt verändert: Thu Jul 02 14:41:22 CEST 1998 Pfad:..\..\Strings/License.txt Name: Strings/License.txt Länge: 3781 Der kanonische Name der Datei ist C:\Java\lva\Strings\License.txt Zuletzt verändert: Thu Feb 25 14:33:49 CET 1999 Pfad:../Datei Name:../Datei Länge: 0 Der kanonische Name des Verzeichnisses ist C:\Java\lva\Exceptions\Datei Inhalt des Verzeichnisses: Datei.cdb, Datei.class, Datei.java, Datei.ve2, Datei.vep, Datei.vpj, License.txt Datei License.txt und Verzeichnis SplitFile: Rechte "WXDPO" Zuletzt verändert: Thu Jan 01 01:00:00 CET 1970 Pfad:../SplitFile\License.txt Name: License.txt Länge: 0 Seltsam: Weder Datei noch Verzeichnis???

PPK2 Java Exceptions, Dateien Seite 19 von 31 import java.io.*; public class VerzeichnisBaum Verzeichnisbaum private static long verzeichnisanzahl=0; // Ein Verzeichnis mit allen seinen Unterverzeichnissen ausgeben private static void listdirectory(file verz,int tiefe) verzeichnisanzahl++; // Richtig eingerückt den Namen ausgeben for(int i=0;i<tiefe;i++) System.out.print(" "); System.out.println(verz.getName()); // Alle Verzeichnisinhalte durchgehen String[] subverz=verz.list(); if(subverz!=null && subverz.length>0)

PPK2 Java Exceptions, Dateien Seite 20 von 31 for(int i=0;i<subverz.length;i++) // Pfad muß zusammengehängt werden! File sub=new File(verz.getPath()+ File.separatorChar+subVerz[i]); if(sub.exists() && sub.canread()) // Nur rekursiv aufrufen, wenn es ein Verzeichnis ist if(sub.isdirectory()) listdirectory(sub,tiefe+1); else System.out.println("Unterverzeichnis "+subverz[i]+ " kann nicht gelesen werden!"); public static void main(string args[]) // Parameter prüfen if(args.length!=1 args[0].length()==0) System.out.println("Aufruf: java VerzeichnisBaum Startverzeichnis");

PPK2 Java Exceptions, Dateien Seite 21 von 31 // Sicherheitshalber / durch \ ersetzen File verz=new File(args[0].replace('/','\\')); // Prüfungen für Startverzeichnis müssen hier gemacht werden if(!verz.exists()!verz.canread()) System.out.println("Verzeichnis "+args[0]+" existiert nicht oder kann nicht gelesen werden!"); if(!verz.isdirectory()) System.out.println(args[0]+" ist kein Verzeichnis!"); // Ausgeben System.out.println("Verzeichnisbaum:"); listdirectory(verz,0); // Statistik ausgeben System.out.println("\nInsgesamt "+verzeichnisanzahl+" Verzeichnisse.\n");

PPK2 Java Exceptions, Dateien Seite 22 von 31 Testausdruck: Verzeichnisbaum: Klassen Abenteuer Daten Objekte Orte Programm Kommandos Parser doc Insgesamt 9 Verzeichnisse.

PPK2 Java Exceptions, Dateien Seite 23 von 31 import java.io.*; import java.lang.*; import java.math.*; SplitFile /** SplitFile: Aufsplitten einer Datei in mehrere kleinere fixer Länge Achtung: Hier wird alles und jedes gedondert mit try abgesichert: Manchmal ist es besser, nicht so detaillierte Fehlermeldungen zu haben, dafür aber einen einfacheren un übersichtlichen Code zu programmieren -> Dies bedeutet NICHT, weniger zu prüfen, sondern NUR die try-blöcke weiter außen zusammenzufassen und als Detail die Exception zu verwenden! @author Dipl.-Ing. Michael Sonntag @version 1.0 */ public class SplitFile public static void main(string[] args) File quelle=null; // Quelldatei File teil; // Zieldatei BufferedInputStream von=null; // Stream zum Einlesen BufferedOutputStream nach=null; // Stream zum Ausgeben long blockgroesse=2048; // Größe der einzelnen Dateien long restlaenge; // Noch zu schreibende Bytes String quellpfad=null; // Pfad und Name der Quelldatei (kan.) int teilnr; // Nummer des aktuellen Teils

PPK2 Java Exceptions, Dateien Seite 24 von 31 System.out.println("SplitFile: Aufteilen von Dateien in kleinere Stücke\n(c) 1999 Dipl.-Ing. Michael Sonntag\n"); // Parameter prüfen if (args.length<1 args.length>2 args[0].length()<1) System.out.println("Benutzung: java SplitFile dateiname [dateigroesse]\ndie Zieldateinamen sind der Quelldatiename mit.1,.2 angehängt. Die Dateigröße der Zeildateien ist in Bytes anzugeben (Standard: "+blockgroesse+ " Bytes)."); // Quelldatei prüfen try quelle=new File(args[0]); quellpfad=quelle.getcanonicalpath(); if(args.length>1) blockgroesse=long.parselong(args[1]); else System.out.println("Standardwert von "+blockgroesse+ " als Blockgröße angenommen.");

PPK2 Java Exceptions, Dateien Seite 25 von 31 catch(numberformatexception e) System.out.println("Ungültige Blockgröße!\nBenutzung: catch(ioexception e) System.out.println("Vollständiger Pfad kann nicht festgestellt werden: "+args[0]+"!"); /* Ist Quelldatei vorhanden, lesbar, eine Datei? */ if (!quelle.exists()) System.out.println("Datei "+quellpfad+" existiert nicht!"); if (!quelle.isfile()) System.out.println(quellpfad+" ist keine Datei!"); if (!quelle.canread()) System.out.println("Datei "+quellpfad+" kann nicht gelesen werden!");

PPK2 Java Exceptions, Dateien Seite 26 von 31 teilnr=0; // Prüfen, ob überhaupt geteilt werden muß restlaenge=quelle.length(); if(restlaenge<blockgroesse) System.out.println("Die Datei ist kleiner als die Blockgröße und wird daher nicht aufgeteilt."); try von=new BufferedInputStream(new FileInputStream(quelle)); while(restlaenge>0) teilnr++; teil=new File(quellpfad+"."+teilNr); /* Ist Zieldatei noch nicht vorhanden und beschreibbar? */ if (teil.exists()) System.out.println("Datei "+quellpfad+"."+teilnr+ " existiert bereits!"); /* Keine Prüfung teil.isfile() -> wenn sie noch nicht existiert (was sie ja hier sicher nicht tut), wird hier immer false zurückgeliefert */

PPK2 Java Exceptions, Dateien Seite 27 von 31 if (!quelle.canwrite()) System.out.println("Datei "+quellpfad+"."+teilnr+ " kann nicht geschrieben werden!"); try nach=new BufferedOutputStream(new FileOutputStream(teil)); System.out.println("Erstelle Teildatei "+teilnr+ ": "+quellpfad+"."+teilnr); long count=0; // Eigentliche Kopierschleife while(count<blockgroesse && restlaenge>0) int nextbyte=-1; try // Ein Byte einlesen nextbyte=von.read(); catch(ioexception e) System.out.println("Fehler beim Lesen der Quelldatei "+quellpfad+": "+e.getmessage());

PPK2 Java Exceptions, Dateien Seite 28 von 31 if(nextbyte<0) // Unerwartetes Dateiende System.out.println("Unerwartetes Dateiende in "+ quellpfad+"."+teilnr+"."); try // Ein Byte schreiben nach.write(nextbyte); catch(ioexception e) System.out.println("Fehler beim Schreiben der Teildatei "+teilnr+" "+quellpfad+"."+teilnr+": "+e.getmessage()); count++; restlaenge--; catch(ioexception e) // Sollte nicht auftreten System.out.println("Zieldatei "+teilnr+": "+quellpfad+ " kann nicht erstellt werden: "+e.getmessage()); System.exit(0);

PPK2 Java Exceptions, Dateien Seite 29 von 31 finally // Zieldatei schließen try nach.close(); catch(ioexception e) // Hier kann nichts mehr getan werden System.out.println("Fehler beim Schließen der Datei "+quellpfad+"."+teilnr+": "+e.getmessage()); System.out.println("Erfolgreich aufgeteilt: "+teilnr+" Teile\n"); catch(filenotfoundexception e) // Sollte nicht auftreten System.out.println("Quelldatei "+quellpfad+" nicht gefunden: "+ e.getmessage());

PPK2 Java Exceptions, Dateien Seite 30 von 31 finally // Quelldatei schließen try if(von!=null) von.close(); catch(ioexception e) // Hier kann nichts mehr getan werden System.out.println("Fehler beim Schließen der Datei "+ quellpfad+": "+e.getmessage());

PPK2 Java Exceptions, Dateien Seite 31 von 31 Testausdruck: SplitFile: Aufteilen von Dateien in kleinere Stücke (c) 1999 Dipl.-Ing. Michael Sonntag Standardwert von 2048 als Blockgröße angenommen. Erstelle Teildatei 1: C:\Java\lva\Exceptions\SplitFile\License.txt.1 Erstelle Teildatei 2: C:\Java\lva\Exceptions\SplitFile\License.txt.2 Erfolgreich aufgeteilt: 2 Teile Mit 1024 als Parameter sofort danach SplitFile: Aufteilen von Dateien in kleinere Stücke (c) 1999 Dipl.-Ing. Michael Sonntag Datei C:\Java\lva\Exceptions\SplitFile\License.txt.1 existiert bereits! Mit 1024 als Parameter nach löschen der Dateien SplitFile: Aufteilen von Dateien in kleinere Stücke (c) 1999 Dipl.-Ing. Michael Sonntag Erstelle Teildatei 1: C:\Java\lva\Exceptions\SplitFile\License.txt.1 Erstelle Teildatei 2: C:\Java\lva\Exceptions\SplitFile\License.txt.2 Erstelle Teildatei 3: C:\Java\lva\Exceptions\SplitFile\License.txt.3 Erstelle Teildatei 4: C:\Java\lva\Exceptions\SplitFile\License.txt.4 Erfolgreich aufgeteilt: 4 Teile