Hallo allerseits,
gerade beschäftige ich mich mit Dateien.
Deshalb habe ich dazu ein paar Fragen:
1)
Fall:
Man will in eine Datei etwas reinschreiben, wie z.B. das Zeichen (Byte) 'x'
Dann kann man dazu einige Wünsche haben, wie z.B:
- Daten ans Ende anfügen,
- überschreiben der Daten, auf deren Anfang der Dateizeiger gerade zeigt
- usw.
(in C kann man dazu entsprechende Flags setzen).
In meinem Beispiel (siehe unten) wird aber beim Beschreiben prinzipiell vorher der Inhalt der Datei gelöscht.
Fragen:
F1) Warum steht dazu nichts in der API-Doku von FileOutputStream?
F2) Wie kann ich meine o.g. Wünsche realisieren? Hängt das jeweils von der Klasse ab, oder gibt es dazu eine allgemeine Regel?
2)
Warum bekomme ich eine Fehlermeldung, wenn ich die Datei mit close() außerhalb des try-Blocks schließe (Beispiel siehe unten)?
3)
Was passiert, wenn man die Anweisung
mydatei.close();
nicht macht?
4) Muss man beim Beschreiben einer Datei einen möglichen Schreibfehler mit catch abfangen:
catch(IOException e){
System.out.println("Schreibfehler"+e.toString());
}
Wann könnte ein Schreibfehler auftreten (mir fällt nur "defekte Hardware" ein)
5)
Tritt eine Exception auf, wenn man beim Lesen einer Datei ans Dateiende kommt?
Ich denke, es wird keine Exception ausgelöst.
Ist das richtig?
mfg
Ernst
gerade beschäftige ich mich mit Dateien.
Deshalb habe ich dazu ein paar Fragen:
1)
Fall:
Man will in eine Datei etwas reinschreiben, wie z.B. das Zeichen (Byte) 'x'
Dann kann man dazu einige Wünsche haben, wie z.B:
- Daten ans Ende anfügen,
- überschreiben der Daten, auf deren Anfang der Dateizeiger gerade zeigt
- usw.
(in C kann man dazu entsprechende Flags setzen).
In meinem Beispiel (siehe unten) wird aber beim Beschreiben prinzipiell vorher der Inhalt der Datei gelöscht.
Fragen:
F1) Warum steht dazu nichts in der API-Doku von FileOutputStream?
F2) Wie kann ich meine o.g. Wünsche realisieren? Hängt das jeweils von der Klasse ab, oder gibt es dazu eine allgemeine Regel?
2)
Warum bekomme ich eine Fehlermeldung, wenn ich die Datei mit close() außerhalb des try-Blocks schließe (Beispiel siehe unten)?
3)
Was passiert, wenn man die Anweisung
mydatei.close();
nicht macht?
4) Muss man beim Beschreiben einer Datei einen möglichen Schreibfehler mit catch abfangen:
catch(IOException e){
System.out.println("Schreibfehler"+e.toString());
}
Wann könnte ein Schreibfehler auftreten (mir fällt nur "defekte Hardware" ein)
5)
Tritt eine Exception auf, wenn man beim Lesen einer Datei ans Dateiende kommt?
Ich denke, es wird keine Exception ausgelöst.
Ist das richtig?
mfg
Ernst
Code:
import java.io.*;
public class MainDatei1 {
public static void main(String[] args) {
// Aus Datei lesen
File f = new File("C:\\test1.txt");
int zeichen = 0;
FileInputStream mydatei;
if(f.isFile()==true){
System.out.println("Dies ist eine Datei");
}
else{
System.out.println("Dies ist eine Datei");
}
try{
mydatei = new FileInputStream(f);
System.out.println("Dateiinhalt: ");
do{
zeichen = mydatei.read();
if(zeichen!=-1)
System.out.print((char)zeichen);
else
System.out.println("");
}while(zeichen!=-1);
/*
FRAGE:
Was passiert, wenn man die Anweisung
mydatei.close();
nicht macht?
*/
mydatei.close();
}
catch(FileNotFoundException e){
System.out.println("Datei nicht gefunden"+e.toString());
}
catch(IOException e){
System.out.println("Lesefehler"+e.toString());
}
// Fehler:
//mydatei.close();
/*
FRAGE:
Warum gibt es eine Fehlermeldung, wenn man
mydatei.close();
außerhalb des try-Brereichs implementiert ???
*/
/*
FRAGE:
Warum wird beim Beschreiben einer schon existierenden Datei
zuerst mal der Inhalt der Datei gelöscht?
Es wird also nichts angefügt oder ähnliches gemacht.
*/
// In Datei schreiben
try{
FileOutputStream mySchreibdatei = new FileOutputStream(f);
System.out.println("In Datei scheiben ...");
mySchreibdatei.write((int)'r');
mySchreibdatei.write((int)'s');
//mySchreibdatei.write((int)'z');
mySchreibdatei.close();
}
catch(FileNotFoundException e){
System.out.println("Datei nicht gefunden"+e.toString());
}
catch(IOException e){
System.out.println("Schreibfehler"+e.toString());
}
}
}