• Keine Ergebnisse gefunden

5.2 Input/Output mit Dateien

N/A
N/A
Protected

Academic year: 2022

Aktie "5.2 Input/Output mit Dateien"

Copied!
23
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

252-0027

Einführung in die Programmierung

5.2 Input/Output mit Dateien

Michael Faes & Thomas R. Gross Departement Informatik

(2)

Manipulieren von Dateien

Klasse File erlaubt Operationen mit Dateien (Files)

Lesen/schreiben

Informationen abrufen, z.B. Grösse

Umbenennen, löschen, …

2

import java.io.*;

File file = new File("example.txt");

if (file.exists() && file.length() > 1000) { file.delete();

}

Import nötig!

(3)

File-Methoden

3

exists() Gibt true zurück, falls diese Datei existiert, sonst false

canRead() Gibt true zurück, falls diese Datei gelesen werden kann, sonst false

getName() Gibt den Namen diese Datei zurück length() Gibt die Dateigrösse, in Bytes, zurück delete() Löscht die Datei!

renameTo(file) Bennent die Datei um!

(4)

Datei-“Handle”

Ausdruck new File("example.txt") erstellt keine Datei!

Sondern nur ein Objekt (“handle”), welches für eine Datei mit diesem Namen steht

Und mit welchem diese Datei manipuliert werden kann

Datei, für welche File steht, kann existieren oder nicht

Deshalb: exists()

4

(5)

File Input

Lesen aus einer Datei

5

(6)

Lesen aus einer Datei

Das können Sie schon!

Oder kürzer:

6

import java.io.*;    // für File

import java.util.*;  // für Scanner File file = new File("input.txt");

Scanner scanner = new Scanner(    );

int zahl = scanner.nextInt();

file

Scanner scanner = new Scanner(new File("input.txt"));

(7)

(Text-Datei erstellen)

In Eclipse auf Projekt rechtsklicken  NewFile Dateinamen eingeben, z.B. input.txt  Finish

In Editor Text eingeben, z.B. 42, dann speichern.

7

(8)

Dokumentation für Scanner

8

(9)

“Konstruktoren”

Es gibt verschiedene Möglichkeiten, einen Scanner aufzusetzen.

9

(10)

“FileNotFoundException”

10

Was bedeutet das?

(11)

Compiler-Fehler…

Wenn wir nichts machen, reklamiert der Compiler…

11

(12)

Was sind Exceptions?

Eine Exception (Ausnahme) ist die Folge eines Fehlers zur Laufzeit des Programmes:

• Eine ganze Zahl durch 0 dividieren

• Zugriff auf ein Array-Element, das nicht existiert

• Lesen eines falschen Typs im Scanner

Lesen einer Datei, die nicht existiert

Wir sagen, ein Programm mit einem Fehler “wirft”

(throws) eine Exception.

12

(13)

Exception-Beispiel

13

void main() { // ...

foo();

// ...

}

void foo() { bar();

// ...

}

void bar() { int x = 2;

int y = 10/x;

// ...

}

(14)

Exception-Beispiel

14

void main() { // ...

foo();

// ...

}

void foo() { bar();

// ...

}

void bar() { int x = 0;

int y = 10/x;

// ...

}

Fehler!

(15)

Exceptions auffangen

Ein Programm kann Exceptions auch “auffangen” (catch), um auf Fehler zu reagieren

Gewisse Exceptions (“checked Exceptions”) müssen vom Programm gefangen werden!

Compiler checkt das; sonst wird das Programm nicht übersetzt

Müssen festlegen, wie unser Programm mit I/O-Problemen umgeht…

15

(16)

throws-Ankündigung

throws: Ankündigung in der Deklaration einer Methode

• Deklariert, dass Methode evtl. eine Exception wirft…

• … und nicht selber wieder auffängt!

D.h. wer die Methode aufruft, muss Exception fangen (oder sie wiederum ankündigen)

Syntax: public static void foo(…) throws type

• Wobei type die Art der geworfenen Exception ist

16

(17)

Das kennen wir doch schon…

17

(18)

throws-Beispiel

Jetzt ist der Compiler zufrieden!

Exceptions, welche die main-Methode wirft, werden vom

System gefangen (und produzieren einen Stacktrace)

18

CHECK

(19)

File Output

In eine Datei schreiben

19

(20)

PrintStream-Klasse

Wie File aus java.io; erlaubt es Daten auszugeben (z.B. in eine File)

Alle Methoden, die wir von System.out kennen, funktionieren auch für PrintStream!

D.h. print(), println()

Syntax:

20

File file = new File("example.txt");

PrintStream output = new PrintStream(file);

(21)

Statt in Konsole, in Datei

21

for (int i = 0; i < 10; i++) {

.print("Hello World ");

.print(i);

.println("!");

}

System.out System.out System.out

(22)

Statt in Konsole, in Datei

22

import java.io.*;

File file = new File("output.txt");

PrintStream fileOutput = new PrintStream(file);

for (int i = 0; i < 10; i++) {

.print("Hello World ");

.print(i);

.println("!");

}

fileOutput fileOutput fileOutput

(23)

Datei-Ausgabe

Wenn Datei nicht existiert, wird sie erstellt Wenn sie existiert, wird sie überschrieben!

Ausgabe ansehen:

• In Eclipse auf Projekt

rechtsklicken  Refresh

• Datei output.txt sollte erscheinen

• Doppelklick

23

Referenzen

ÄHNLICHE DOKUMENTE

Betriebsräte sind aufgrund ihrer Vertrauensstellung häufig erster Ansprechpartner für Betroffene und haben da- her eine wesentliche Funktion, wenn es darum geht,

Beide waren dabei ohne besonde- re Erwartungen in den Bundesfrei- willigendienst gestartet, missen möchten Melina Weber und Patrick Böhlke diese Erfahrungen aber nicht mehr:

„Sie ist eine von so vielen freiwilli- gen Helfern in unserer Lebenshilfe“, sagt Agi Palm, Freiwilligen-Koordina- torin der Lebenshilfe Heinsberg, „die – ohne groß bemerkt zu

canRead() Gibt true zurück, falls diese Datei gelesen werden kann, sonst false. getName() Gibt den Namen diese Datei zurück length() Gibt die Dateigrösse, in Bytes, zurück

Gibt true zurück, falls gegebene Taste im Moment gerade gedrückt wird, false andernfalls. isLeftMouseButtonPressed() / isRightMouseButtonPressed() Gibt true zurück, falls

Diese Möglichkeit, trotz allem noch Musik machen zu können, war für viele eine wichtige Begleitung während dieser schweren Zeit.» Auch sei es spannend gewesen, einen Einblick

Erstmals sang sie die Rolle der Brünnhilde in Richard Wagners &#34;Ring des Nibelungen&#34; im Jahr 2007 am Deutschen Nationaltheater in Weimar: Im Sommer 2016 war die

Und wenn sie sich etwas wünschen dürfte, würde sich Christin Petzold für sich und ihre Familie vor allem wünschen, dass alles so bleibt, wie es ist: ihr Leben zwischen