Informationen speichern

Status
Nicht offen für weitere Antworten.

Digedag

Mitglied
Hallo ich versuche gerade Informationen meines Programmes in einer Datei zu speichern.
Der Compiler spuckt eine Fehlermeldung bei folgendem Code aus:
Code:
    public void Ende(){
        int i;
        File Datei = new File("Test.txt");
    -->FileWriter ausgabestrom = new FileWriter(Datei);
        PrintWriter ausgabe = new PrintWriter(ausgabestrom);
        for (i=98;i>-1;i--){
        System.out.println("Zeile"+i+": "+Zeile[i].getText());
        ausgabe.println(Zeile[i].getText());
        }
        ausgabe.close();
        System.exit(0);
    }
Die Fehlermeldung lautet: "unreported exception java.io.IOException; must be caught or declared to be thrown"
Ich habe noch keine Ahnung von Exceptions und eigentlich hatte ich es bei einem derart simplen Programm auch noch nicht vor mich damit zu beschäftigen.
Kann mir jemand sagen was genau der Compiler von mir erwartet?

Als alter Turbo Pascaler würde ich gerne mal die Befehle von Turbo Pascal auf Java übertragen (bzw. umgekehrt).
Kann man das folgendermaßen vegleichen:
assign(Datei,"Test.bat"); ~ File Datei = File("Test.bat");
rewrite(Datei); ~ File Datei = new File("Test.bat");
close(Datei); ~ Datei.close();
append(Datei); ~ macht Java beim öffnen einer Datei automatisch

Gibt es bei Java auch einen Dateizeiger? Bei Turbo Pascal setzte man diesen beim Lesen i.d.R. zurück mit reset(Datei);

Falls ich irgendwie voll kommen auf dem Schlauch stehe dann möchte ich darüber natürlich aufgeklärt werden.
Falls einer der Meinung ist er hätte eine bessere oder geeignetere Methode parat dann soll er mir diese gerne mitteilen. Bei Java scheint es ja so zu sein, dass es für die einfachstenm Probleme meistens gleich mehrere Lösungen gibt. Das finde ich sehr verwirrend.
 

byte

Top Contributor
Die Fehlermeldung sagt eigentlich alles: Du musst die Ausnahme IOException entweder abfangen oder aus dem Kontext der Methode werfen.

Mach am besten ein Try / Catch in die Methode

Code:
public void ende() {
   try {
      ...
   } catch(IOException ioe) {
      ioe.printStackTrace();
   }
}

Andere Möglichkeit:

Code:
public void ende() throws IOException {
   ...
}

Aber damit verlagerst Du das Problem nur an eine andere Stelle, nämlich überall dort, wo Du diese Methode aufrufst.


PS: Methodennamen und Variablen beginnen in Java grundsätzlich mit einem Kleinbuchstaben...
 

millinär

Bekanntes Mitglied
Code:
try{   public void Ende(){
        int i;
        File Datei = new File("Test.txt");
    -->FileWriter ausgabestrom = new FileWriter(Datei);
        PrintWriter ausgabe = new PrintWriter(ausgabestrom);
        for (i=98;i>-1;i--){
        System.out.println("Zeile"+i+": "+Zeile[i].getText());
        ausgabe.println(Zeile[i].getText());
        }
        ausgabe.close();
        System.exit(0);
    }
catch(IOException e){

}
}
probiers mal so
 

Murray

Top Contributor
Ohne millinär zu nahe treten zu wollen: vergiss den letzten Tip ganz schnell.

Grund: der Compiler mag mit der Lösung zufrieden sein, weil die Exception ja abgefangen wird; behandelt wird sie aber nicht. Wenn hier ein Fehler auftritt (z.B. weil man im aktuellen Verzeichnis keien Shcreibrechte hat), dann merkt man das nicht.
Also: im catch-Block mindestens ein System.out.println( e), besser ein e.printStackTrace(), noch besser eine der jeweiligen Anwendung angepasste Behandlung.
 

millinär

Bekanntes Mitglied
Code:
catch(IOException e){
System.out.println("i habs file net gefunde i glaub 
des isch i nem andern ordner oder mei 
 feschtplatte hat zuviel gesoffe und morge weis si net mehr was sie gemacht hat");
}
 

Einwegdose

Aktives Mitglied
Wieso eigentlich FileWriter -> PrintWriter .. ka ich nehm lieber den BufferedWriter :?
Und das man nen t/c um ne ganze Methode macht hab ich auch noch nicht gesehen :D

Mein Vorschlag:

Code:
public void ende(){
 try {
  BufferedWriter out = new BufferedWriter(new FileWriter(new File("./Test.txt")));
  for (int i=98;i>-1;i--){
   System.out.println("Zeile"+i+": "+Zeile[i].getText());
   out.write(Zeile[i].getText());
   out.newLine();
  }
 } catch ( IOException ioe ) {
    System.out.println("Fehler beim Schreiben:\r\n"+ioe.printStackTrace());
   }
 out.close();
  System.exit(0);
}
 

millinär

Bekanntes Mitglied
ich mach das immer so lol ich nehm auch immer nur Exception in letzter zeit throw ich sogar alles immer bis zur main methode viele exceptions sind ja auch unrealistisch wenn ich z.b. weis das ein programm vermutlich sowieso keine exception auslöst wenn ichs richtig programmiert habe kann ichs mir auch sparen

ist natürlich nicht zur nachahmung zu empfehlen ist ne schlecht angewohnheit
 

Einwegdose

Aktives Mitglied
Naja das kommt immer darauf an, wenn du z.B. ein Programm mit Benutereingaben hast kannst du dir nie sicher sein was eingegeben wird .. aber auch wenn das Programm Daten einliest oder so etwas kann es ja immer mal sein dass die Daten korrupt sind.

Von daher sind sie schon ganz sinnvoll :)
 

Leroy42

Top Contributor
Digedag hat gesagt.:
Als alter Turbo Pascaler würde ich gerne mal die Befehle von Turbo Pascal auf Java übertragen (bzw. umgekehrt).
Kann man das folgendermaßen vegleichen:
assign(Datei,"Test.bat"); ~ File Datei = File("Test.bat");
rewrite(Datei); ~ File Datei = new File("Test.bat");
close(Datei); ~ Datei.close();
append(Datei); ~ macht Java beim öffnen einer Datei automatisch

Pascal und auch C hatten nur eine ganz rudimentäre byte-orientierte
Dateibehandlung. Löse dich am besten und arbeite dich am besten
anhand eines Buches in das package java.io ein, da Dateien/Streaming
in Java weitaus umfangreicher sind.

Dateizeiger gibt es in der Klasse java.io.RandomAccess...
 

Lim_Dul

Top Contributor
millinär hat gesagt.:
ich mach das immer so lol ich nehm auch immer nur Exception in letzter zeit throw ich sogar alles immer bis zur main methode viele exceptions sind ja auch unrealistisch wenn ich z.b. weis das ein programm vermutlich sowieso keine exception auslöst wenn ichs richtig programmiert habe kann ichs mir auch sparen

ist natürlich nicht zur nachahmung zu empfehlen ist ne schlecht angewohnheit

Die Checked Exceptions, insbesondere die IOException sind Exceptions, die trotz korrekt programmierten Code auftreten können.

Sobald man anfängt Netzwerkkommunikation zu machen, werden zwangsläufig IOExceptions auftreten.
 

Digedag

Mitglied
Danke sehr für die Antworten. Es klappt alles so wie ich es mir vorgestellt habe.

Wenn ich das mit "printStackTrace()" richtig verstanden habe wird im Fehlerfall ein Text ausgegeben. Z.B. "error - not able to write into Test.txt".

@ Leroy42: Ich habe mir schon gedacht dass man das nicht mit Turbo Pascal vergleichen kann.

@ Einwegdose: Da hast du natürlich Recht. Wäre ja unschön wenn ich im Fehlerfall das Programm nicht beenden könnte.

BufferedWriter macht einen guten Eindruck. Aber wieso erst write und dann newLine? Gibt es denn keine writeln? Kann man bei BufferedWritter auch print und println einsetzen?
 

Leroy42

Top Contributor
Digedag hat gesagt.:
Kann man bei BufferedWritter auch print und println einsetzen?

Pack den BufferedWriter noch in einen PrintWriter und du hast print und println
für alle Datentypen überlagert.

Das Pascal'sche write und writeln hat die Problematik, daß deren Syntax
außerhalb von Pascal liegt (writeln(myFloat:6:2)) und somit derartige Funktionen
nicht selbst in der Sprache nachgeschrieben werden können; was C und Java
vermeiden wollten.

C führte die Funktion printf für formatierte Ausgaben und das varargs-Konzept
für die Übergabe einer variablen Anzahl von Parametern beliebigen Typs ein
ohne die C-Syntax zu verlassen.

Das ganze krankte allerdings an der unsicheren Umsetzung, indem Pointer
auf den Stack rumfriemelten und weder zur Compilezeit noch zur Laufzeit
geprüft werden konnte ob die Anzahl und Typen der übergebenen Parameter
korrekt sind, was schnell zu unkontrollierten Zugriff (printf) oder gar Überschreiben (scanf)
führen konnte.

Java geht da seit 1.5 endlich einen sauberen Weg, der dir spätestens zur Laufzeit
sagen kann, daß der Formatstring nicht zu den übergebenen Argumenten paßt.
Zusammen mit dem Prinzip des Autoboxings/unboxings von Daten primitiven Typs
hat man nun alle gewünschten Möglichkeiten (Den Overhead des Autoboxings kann
man für reale Programme vernachlässigen), so daß das printf einer Instanz
der Klasse Printer (oder String.format) dem Pascal'schen writeln in nichts mehr nachsteht.

Ich persönlich finde die Möglichkeiten die der Formatstring zur Verfügung stellt
schon gut durchdacht und ausgereift. Z.B. paßt der Formatstring
"%,20d"
auf jeden Ganzzahltyp wie byte, short, int, long und sogar BigInteger.

Dieser Code
Code:
		System.out.printf("%,30d%n", 42);
		System.out.printf("%,30d%n", new BigInteger("123456789123456789123"));

erzeugt, wie erwartet:
Code:
                           42
   123.456.789.123.456.789.123
für das deutsche Locale.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Speichern von zusätzlichen Informationen Allgemeine Java-Themen 4
I Laden von Informationen aus Dateien: Austauschbarkeit: 2 Dateien sinnvoll? Allgemeine Java-Themen 2
E Datei-Informationen Allgemeine Java-Themen 12
M Film Informationen aus Internet beziehen Allgemeine Java-Themen 4
M Informationen aus komplexen String parsen Allgemeine Java-Themen 13
B Suche Datenquelle für lizenz-informationen Allgemeine Java-Themen 5
C Informationen in eine Datei auslagern Allgemeine Java-Themen 19
C C-ähnlichen Code nach speziellen Informationen durchsuchen Allgemeine Java-Themen 2
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
T Ausgabeumleitung in Datei + weitere Informationen Allgemeine Java-Themen 3
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
S System Informationen auslesen. Allgemeine Java-Themen 3
M Desktop-Informationen Allgemeine Java-Themen 2
M Email - Informationen auslesen Allgemeine Java-Themen 3
M Informationen über abgeleitete Klassen Allgemeine Java-Themen 18
L Informationen aus mp3-Song Allgemeine Java-Themen 5
M datei informationen auslesen Allgemeine Java-Themen 16
T Informationen zu Diensten Allgemeine Java-Themen 3
T wie speichert man Daten/Informationen? Allgemeine Java-Themen 8
Luma Zip-Archiv auslesen und Entry-Informationen auslesen Allgemeine Java-Themen 3
N Servlets: Formulardaten auslesen (POST) - mehr Informationen Allgemeine Java-Themen 4
OnDemand Zugangsdaten externer Systeme sicher speichern Allgemeine Java-Themen 8
Z Passwort Versuche speichern Allgemeine Java-Themen 8
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
temi Lösung zum Speichern von Deltafiles Allgemeine Java-Themen 6
J Java Filechooser Speichern Allgemeine Java-Themen 8
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
T Speichern von Objekten Allgemeine Java-Themen 2
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
@SupressWarnings() Feste Kosten speichern Allgemeine Java-Themen 4
N ZIp datei direkt im eclipse speichern Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
C Best Practice Speichern kleineren Mengen Stammdaten? Allgemeine Java-Themen 3
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
F Json in sql speichern und lesen Allgemeine Java-Themen 10
F Alte Passörter mit Gson und Json in SQL speichern? Allgemeine Java-Themen 5
K API-Key sicher speichern Allgemeine Java-Themen 2
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Daten persistent speichern Allgemeine Java-Themen 14
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
M YouTube-Video herunterladen und speichern Allgemeine Java-Themen 10
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S Wertepaar in LinkedList/PriorityQueue speichern Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
J Arraylist speichern und laden? Allgemeine Java-Themen 5
S speichern von RSA-Keys Allgemeine Java-Themen 1
3 OOP Instanzen aus einer Klasse persistent speichern. Allgemeine Java-Themen 9
GUI-Programmer Mp3 Dateien bearbeiten und speichern Allgemeine Java-Themen 3
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
D IP-Cam live stream speichern Allgemeine Java-Themen 9
javampir Lange Bitfolge speichern Allgemeine Java-Themen 3
M Methoden in Rescources speichern Allgemeine Java-Themen 4
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
J RC4 Key als String speichern? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben