Problem mit BufferedWriter

W

Wings

Gast
Hey Leute,

ich möchte ein txt erstellen(funktioniert auch) und in diese mehrere Ausgaben speichern. Dafür hab ich eine Klasse deklariert die das steuern soll. Es wird auch geschrieben, nur wenn ich eine andere Methode aufrufe, die eine weitere Zeile schreiben soll (in einer anderen Klasse), gibts nen Fehler .... Könnt ihr mir helfen ...??????
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package +++;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ++++
 */
public class Statistik {

    BufferedWriter b = null;
    Date date = new Date();

    public void LogErstellen() {
        String DATE_FORMAT = "dd.MM.yyyy hh-mm-ss";
        SimpleDateFormat dt = new SimpleDateFormat(DATE_FORMAT);
        System.out.println("Date = " + dt.format(date));
        try {
            b = new BufferedWriter(new FileWriter("C:/Dokumente und Einstellungen/****/Desktop/Statistik/" + dt.format(date) + ".txt"));
        } catch (IOException ex) {
            Logger.getLogger(Statistik.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void StatArchivAuswahl() {      // FUNKTIONIERT !!!!!!!!!
        try {
            String s = "";
            s = "Anwendername: " + FeAnmeldung.tfName.getText() + " ----- " + date;
            b.write(s);
            b.newLine();
            
        } catch (Exception ex) {
            System.out.println("Fehler beim Stats schreiben");
        }
    }

    public void StatDbAuswahl() {     // HIER DER FEHLER
        try {
            String s = "";
            s = "Ausgewälte Datenbank: " + DbAuswahl.tfDatenbank.getText() + " ----- " + date;
            b.write(s);
            b.newLine();
            b.close();
        } catch (Exception ex) {
            System.out.println("Fehler beim Stats schreiben");
        }
    }
}
 
S

SlaterB

Gast
was ist ein 'Fehler'? Compilerfehler so dass du das Programm gar nicht starten kannst oder Exception zur Laufzeit,
schreibe immer
ex.printStackTrace();
in dein catch um den Fehler auszugeben, und kopiere diese wichtigen Informationen hierher

-----

dein Programm enthält keinerlei Methodenaufrufe/ ablauf,
da kann alles möglich schiefgehen,
z.B. wird StatDbAuswahl() an einen Statistik-Objekt aufgerufen, bei dem b null ist weil LogErstellen() nie ausgeführt wurde
 

Thief

Bekanntes Mitglied
Generell ist es immer von Vorteil die Fehlermeldung auch zu posten, und nicht nur zu sagen: "Da ist n Fehler".

Gibt mal mit ex.printStackTrace() die Fehlermeldung aus und poste sie bitte.

Mal davon abgesehen versteh ich grad auch nicht den Sinn deiner Aufsplittung in mehrere Methoden, denn da die 1. Methode den Stream nicht schliesst ist sie zwangsweise auf eine weitere Methode angewiesen. Wäre es nicht besser jedesmal eine neue Verbindung aufzubauen und neu Daten hineinzuschreiben, wenn die Ereignisse unabhängig voneinander geschrieben werden?
 
W

Wings

Gast
sorry, ich arbeite immer mit dem debugger
Ich habe ja die Vermutung, dass er die "Vebindung" zum BufferedWriter nicht mehr kennt, durch das close(); der Methode StatArchivAuswahl,wenn ich haber das close nur nach der Methode StatDbAuswahl mache, schreibt er gar nichts



Java:
run:
Date = 14.04.2010 01-55-31
Verbindung zum Treiber/ Datenbank erfolgreich hergestellt
Die Verbindung zur Datenbank wurde geschlossen
Verbindung zum Treiber/ Datenbank erfolgreich hergestellt
java.lang.NullPointerException
        at ****.Statistik.StatDbAuswahl(Statistik.java:51)
        at ****.DbAuswahl.butDbSpeichernActionPerformed(DbAuswahl.java:83)
        at ****.DbAuswahl.access$200(DbAuswahl.java:3)
        at ****.DbAuswahl$3.actionPerformed(DbAuswahl.java:41)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6216)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5981)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4583)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4413)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2475)
        at java.awt.Component.dispatchEvent(Component.java:4413)
Fehler beim Stats schreiben
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
S

SlaterB

Gast
eine NullPointerException deutet wie von mir vermutet auf b == null,
was ist das für ein Statistik-Objekt, wer erstellt es wann wo warum wie?

dieser Fehler gehört wahrscheinlich zur Kategorie, die nur im Gesamtkontext eines Programme analysiert werden kann
 

Geeeee

Bekanntes Mitglied
Und die daraus resultierende Frage:
Was steht in Zeile 51?
a) der BufferedWriter: der ist null
b) DbAuswahl.tfDatenbank.getText(): da ist entweder DbAuswahl oder tfDatenbank null
Nachtrag: Ahh sorry, du hast da wirklich 1:1 die Zeilen stehen :oops:
...also a ;)
Und noch ein Nachtrag: Vorposter bestätigen. Es ist eigentlich irgendwo was verquer, wenn vorher das Objekt vorhanden ist (siehe 49, 50) und es dann knallt.
Entweder nutzt du Threads oder deine Zeilenangaben haben sich doch verschoben
 
Zuletzt bearbeitet:
W

Wings

Gast
Zeilenangaben haben sich durch das einfügen von der exception verschoben, ja dass b== null ist weiss ich , aber warum:(

Statistik heisst die Klasse, ist keine Methode


Könnte es daran liege, dass die Methode LogErstellen nicht in public DbAuswahl() unter InitComponents is?!, weil, wenn ich in die Methode LogErstellen(); einfüge , gehts... Nur dann hab ich ja wieder ne neue Datei und das will ich ja nicht, ich möchte alles in eine schreiben
Java:
public class DbAuswahl extends javax.swing.JFrame {

    Datenbank db = new Datenbank();
    Statistik st = new Statistik();

    public DbAuswahl() {
        initComponents();
        LogErstellen(); // <-- geht jetz, aber es wird ne neue datei erstellt(ich möchte es in die gleiche schreiben, die beim start des progs aufgerufen wird)
 
S

SlaterB

Gast
> Nur dann hab ich ja wieder ne neue Datei

hier kann man herauslesen dass es irgendwo noch ein anderes Statistik-Objekt gibt?
das wird zum Rätsel-raten

du müsstest auf irgendeinem Weg dafür sorgen, dass das andere Statistik-Objekt auch im JFrame landet, statt dort ein zweites zu erstellen,
z.B. Parameter im Konstruktor wenn der Aufrufer das andere kennt

einfacher wäre, wenn das Statistik global unter einer statischen Variable erreichbar ist,
so wie es mit System.out klappt
 
W

Wings

Gast
nein es gibt WIRKLICH kein anderes statistik objekt ;)
Java:
public class Statistik {

    BufferedWriter b = null;
    Date date = new Date();

    public void LogErstellen() {
        String DATE_FORMAT = "dd.MM.yyyy hh-mm-ss";
        SimpleDateFormat dt = new SimpleDateFormat(DATE_FORMAT);
        System.out.println("Date = " + dt.format(date));
        try {
            b = new BufferedWriter(new FileWriter("C:/Dokumente und Einstellungen/Zill/Desktop/Statistik/" + dt.format(date) + ".txt"));
        } catch (IOException ex) {
            Logger.getLogger(Statistik.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
ich meine wenn ich die Methode LogErstellen(); den InitComponents übergebe, wird ne neue Datei erstellt dann ruf ich auf dem nen button die Methode Aus der Klasse Statistik StatDbAuswahl auf und bekomme es in die NEUE Datei . also hab ich dann 2 txt´s im Pfad C:\Dokumente und Einstellungen\****\Desktop\Statistik
Ich möchte aber alles in EINER Datei
hier noch mal die Klasse
C:\Dokumente und Einstellungen\Zill\Desktop\Statistik
 
S

SlaterB

Gast
> bekomme es in die NEUE Datei

wie definiert sich denn die ALTE Datei, worum gehts hier überhaupt?
wenn es nur ein Statistik-Objekt gibt, dann (pro Programmablauf) auch nur eine Datei oder wird LogErstellen() ehrfach aufgerufen?

woran erkennst du dass es zwei Dateien sind oder weißt du auch nicht warum?
wie immer: wer erzeugt wann wo warum Statistiken,

wenn man nur deinen bisher geposteten Code nimmt, mit einem JFrame, das einmal ein Statistik-Objekt erzeugt,
gibt es keinen Grund anzunehmen dass mehrere Dateien erzeugt werden, von mehreren Programmstarts abgesehen,
da ist das ja klar bei genauen Datum im Dateiname


ich glaube ja gerne dass bei dir irgendwas schief läuft und du auch Informationen dazu hast,
aber hier hast du davon bisher wenig verraten


> dann ruf ich auf dem nen button die Methode Aus der Klasse Statistik StatDbAuswahl auf und bekomme es in die NEUE Datei

wie unterscheidet sich denn die neue von der alten? anderes Datum?
baue in LogErstellen() eine Log-Ausgabe (...) ein:
System.out.println("erstelle neue Log-Datei mit Datum: .. ");

dann siehst du, wie oft im Programm LogErstellen() ausgeführt wird, ergo wie viele verschiedene Dateien es gibt,
wenn die Meldung mehr als einmal kommt und du dir das nicht erklären kannst, dann schaue dir die Aufrufer der Methode an,

z.B.
new Error("wo kommst du her").printStackTrace();
liefert einen ähnlichen StackTrace wie zur NullPointerException,
da siehst du Zeile um Zeile wer wen aufruft
 
S

SlaterB

Gast
du hast mir ja per PM den Code geschicht, also:
> es gibt WIRKLICH kein anderes statistik objekt
war wie abzusehen falsch

das erste Statistik-Objekt ist in FeAnmeldung, auch richtig mit LogErstellen()-Aufruf,
das klappt soweit, erstellt eine Log-Datei beim Start

erfolgt eine Anmeldung, dann wird irgendwann das DbAuswahl-Fenster gestartet,
und darin ist auch ein Statistik-Objekt, zweifelsfrei ein zweites oder?
bisher fehlte dort der LogErstellen()-Aufruf, daher die NullPointerException,

wenn du aber in DbAuswahl auch LogErstellen() aufrufst, wie du im Posting 'Gestern, 14:25' zweifelsfrei andeutest,
dann hast du 2x Statistik und 2x LogErstellen() aufgerufen,
wie du unter diesen klaren Umständen auf 'nur eine Statisik' beharrst, ist mir ein Rätsel

FeAnmeldung erzeugt in login() ArchivAuswahl,
ArchivAuswahl erzeugt in irgendeiner actionPerformed DbAuswahl,
es wäre kein Problem, das erste Statistik-Objekt aus FeAnmeldung überall als Parameter durchzureichen statt später ein zweites Statistik-Objekt zu erzeugen
 
Zuletzt bearbeitet von einem Moderator:

Wings

Mitglied
Vielen herzlichen dank .... wie reiche ich das Statistik Objekt durch? ....

Werde die Lösung sobald ich alles hinbekommen hab Posten

Lg Wings
 
S

SlaterB

Gast
A hat etwas, x
B soll das auch haben


B b = new B(x); // Parameter in Konstruktor
oder
B b = new B();
b.setX(x) // set-Methode


vergleiche
new SimpleDateFormat(DATE_FORMAT);
 

Wings

Mitglied
Ok Läuft :toll:

Java:
 ArchivAuswahl archivAuswahl = new ArchivAuswahl(this.st); //this.st hab ich den Button übergeben 
          archivAuswahl.setVisible(true);
Dann hat NeatBeans nen neuen Konstruktor erzeugt
Java:
 ArchivAuswahl(Statistik st) {
        initComponents();
        this.setSize(350, 230);
        this.setResizable(false);
        int posX = (getToolkit().getScreenSize().width - this.getWidth()) / 2;
        int posY = (getToolkit().getScreenSize().height - this.getHeight()) / 2;
        this.setLocation(posX, posY);
        this.st=st;
    }
stehen alle Werte des ersten Konstruktors drinn, mit dem zusatz: --> this.st=st;<--

Anstatt Statistik mit NEW zu erzeugen hab ich
Java:
public class ArchivAuswahl extends javax.swing.JFrame {

    Datenbank db = new Datenbank();
    Statistik st;
gemacht

Das gleiche dann in der nächsten Klasse DbAuswahl
Java:
public class DbAuswahl extends javax.swing.JFrame {

    Datenbank db = new Datenbank();
    Statistik st;

    public DbAuswahl() {
        initComponents();
        this.setSize(300, 200);
        this.setResizable(false);
        int posX = (getToolkit().getScreenSize().width - this.getWidth()) / 2;
        int posY = (getToolkit().getScreenSize().height - this.getHeight()) / 2;
        this.setLocation(posX, posY);
    }

    DbAuswahl(Statistik st) {
        initComponents();
        this.setSize(300, 200);
        this.setResizable(false);
        int posX = (getToolkit().getScreenSize().width - this.getWidth()) / 2;
        int posY = (getToolkit().getScreenSize().height - this.getHeight()) / 2;
        this.setLocation(posX, posY);
        this.st=st;
    }

Vielleicht könnte ein Mod den Titel umbenennen, weil es ja kein Problem mit dem BufferedWriter ist, sondern mit Referenzen von Methoden auf andere Klassen. Das kann ich jedoch nicht machen, weil ich, als ich das Thema gestartet habe noch nicht registriert war


Danke euch ....

EDIT : Das close(); des Streams des BufferedWriters darf erst nach der letzten Methode der Statistik Klasse erfolgen, weil es sonst ne excepition gibt: Stream ist geschloßen!
Java:
   public void StatArchivAuswahl() {
        Date date = new Date();
        try {
            String s = "";
            s = "Anwendername: " + FeAnmeldung.tfName.getText() + " ----- " + date;
            System.out.println(s);
            b.write(s);
            b.newLine();
           
        } catch (Exception ex) {
            System.out.println("Fehler beim Stats schreiben");
        }
}
            public void StatDbAuswahl() {
        Date date = new Date();
        try {
            String s = "";
            s = "Anwendername: " + DbAuswahl.tfDatenbank.getText() + " ----- " + date;
            System.out.println(s);
            b.write(s);
            b.newLine();
            b.close(); // hier erst den BufferedWriter schießen
        } catch (Exception ex) {
            System.out.println("Fehler");
            ex.printStackTrace();
        }
Lg Wings
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
R Problem mit BufferedWriter Allgemeine Java-Themen 4
C Problem mit BufferedWriter Allgemeine Java-Themen 7
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
J Clear-Problem Allgemeine Java-Themen 10
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
S JFileChooser Problem Allgemeine Java-Themen 4
M Traveling Salesman - MST Heuristik Problem Allgemeine Java-Themen 4
J Traveling Salesman Problem Allgemeine Java-Themen 14
E Java Editor Problem mit 2er Exceptions Allgemeine Java-Themen 12
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
S Methoden Problem mit NullPointerException Allgemeine Java-Themen 9
Javafan02 Problem mit if-clause Allgemeine Java-Themen 17
J Lombok Problem mit Konstruktoren bei Verberbung Allgemeine Java-Themen 1
kodela Event Handling Problem mit der Alt-Taste Allgemeine Java-Themen 16
W Threads Problem Allgemeine Java-Themen 15
D (Verständnis-)Problem mit Unterklasse Allgemeine Java-Themen 4
S Problem mit Generic bei unmodifiableCollection Allgemeine Java-Themen 4
S jserialcomm Problem Allgemeine Java-Themen 1
Flynn Thread-Problem... Allgemeine Java-Themen 2
J Generische Interface - Problem Allgemeine Java-Themen 3
G Problem beim GUI Allgemeine Java-Themen 9
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
S Java OpenOffice Problem mit Windows-Benutzerwechsel Allgemeine Java-Themen 19
K Threads RAM Problem Allgemeine Java-Themen 20
P Operatoren Problem mit Zähler in recursiver Schleife Allgemeine Java-Themen 2
C Int Problem Allgemeine Java-Themen 8
C J2V8 NodeJs Java Bride Problem und Frage!?!? Allgemeine Java-Themen 1
J Problem bei Hashmap Key-Abfrage Allgemeine Java-Themen 4
C Webseiten Programm problem Allgemeine Java-Themen 5
M LocalDate Problem Allgemeine Java-Themen 4
J "Problem Objektorientierung" Allgemeine Java-Themen 20
geekex Problem Meldung! Was tun?! Allgemeine Java-Themen 19
T Klassen Override Problem Allgemeine Java-Themen 7
L Unbekanntes Problem Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
F HTTPS Zertifikat Problem Allgemeine Java-Themen 3
M OpenCV KNearest Problem Allgemeine Java-Themen 0
Tommy Nightmare Project Euler: Problem 22 Allgemeine Java-Themen 2
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
RalleYTN META-INF/services Problem Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben