Frage von xBarkeeper, 29

Wenn ich mein Java Programm starte wird mein kompletter text gelöscht?

package acc;

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import static javafx.application.Application.launch; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage;

public class Acc extends Application {

@Override
public void start(Stage primaryStage) throws IOException {
    AnchorPane ap1 = new AnchorPane();

    Scene scene = new Scene(ap1, 600, 400);

    //Reader und Writer dateipfad geben
    
    String line = null;
    
    String pfad = "L:\\BEO-MITARBEITER-ORDNER\\Sandro Kobe\\";
    Path pfadMitDatei = Paths.get(pfad, "acc.txt");
    if(!Files.exists(pfadMitDatei))
        {
            Files.createFile(pfadMitDatei);
            System.err.println("-------------------");
        }
    BufferedReader br = Files.newBufferedReader(pfadMitDatei);
    BufferedWriter bw = Files.newBufferedWriter(pfadMitDatei);
   // File datei = new File(pfad);
    
    //Textfields
    
    TextField Benutzernametf = new TextField("Benutzername");
    TextField Passworttf = new TextField("Passwort");
    
    AnchorPane.setTopAnchor(Benutzernametf, 100.0);
    AnchorPane.setLeftAnchor(Benutzernametf, 50.0);
    
    AnchorPane.setTopAnchor(Passworttf, 200.0);
    AnchorPane.setLeftAnchor(Passworttf, 50.0);
    
    ap1.getChildren().addAll(Benutzernametf, Passworttf);
    
    //Fertig Button
    
    Button Fertig1 = new Button("   Fertig   ");
    ap1.getChildren().add(Fertig1);
    AnchorPane.setTopAnchor(Fertig1, 350.0);
    AnchorPane.setLeftAnchor(Fertig1, 500.0);
    
    //SetonAction
    
/*    Fertig1.setOnAction((ev) -> {
        
        

//if(datei.exists() && !datei.isDirectory()) {

        String nbw = Benutzernametf.getText() + " " +Passworttf.getText() + "\n";
        
        System.out.println(nbw);
        
        try {
            bw.write(nbw);
            System.out.println("haaalllooo");
        } catch (IOException ex) {
            System.out.println("Fehdwahd");
        }
        
        
        
       /* try {
            String zeile = br.readLine();
            while (zeile != null) {
                System.out.println(zeile);
                zeile = br.readLine();
            }
        } catch (IOException ex) {System.err.printf("IO: %s%n", ex.getMessage());}
        
        
//}


    });
    
    */
    //
    
    b
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 11

Es passiert gar nichts weil bei dir entsprechende Stellen auskommentiert sind.

Da allerdings in deiner start-Methode folgender Code enthalten ist:

String nbw = Benutzernametf.getText() + " " +Passworttf.getText() + "\n";
....
bw.write(nbw);

Überschreibst du die Datei mit dem was in den Textfeldern steht. 

Antwort
von Gomze, 25
User user = GuteFrage.getUser("xBarKeeper");

if(user != null) {
    user.sendMSG("So werden codeschnipssel geteilt!");
}

Nehme bitte die Code Option...

Kommentar von Isendrak ,
//TODO: Implementieren einer Klasse [GuteFrage] mit "Subklasse" [User] und statischen Methoden [getUser] und [sendMessageToUser]...
GuteFrage.User user = GuteFrage.getUser("Gomze");

if(user != null){
try{
GuteFrage.sendMessageToUser(user, "Und so gibt man dem Benutzer Rückmeldung darüber, ob die Nachricht korrekt versendet wurde und wenn nicht, auch den Grund dafür... %D");
System.out.println("Nachricht versendet.");
}
catch(GuteFrage.MessengerException ex){
System.out.println("Fehler: " + ex.getMessage());
}
}
else{
System.out.println("Benutzer nicht gefunden.");
}
//NOTE: Wenn man die Klasse [GuteFrage] korrekt implementiert, könnte man diesen Code tatsächlich 1:1 in einem "echten" Programm verwenden... %D
Kommentar von Gomze ,

Kann man machen, muss man jz aber nicht :D Vorallem kein trycatch xD

Kommentar von Isendrak ,

Vorallem kein trycatch xD

Na gut... Dann eben was in der Art:

//GuteFrage.sendMessageToUser:
public static boolean sendMessageToUser(User user, string Message);

Dann reicht ein if/else... %D

P.S.: Intern müsste man aber trotzdem irgendwo nen try/catch Block anbringen... Mindestens beim Socket...

Kommentar von Gomze ,

Ja, aber kein Try-Catch um eine Nachricht wenn du vorher Abfragst if(user != null) :D

Kommentar von Isendrak ,

Es ging dabei auch nicht um eine potenzielle NullPointerException (wenn "user = null"), sondern um eine in der Klasse GuteFage definierte Exception, die geworfen wird, wenn beim versenden der Nachricht irgendetwas schief läuft (Socket Timeout, Verbindungsverlust, Hotspot mit "Captive Portal", etc.) in der sich genauere Angaben über den aufgetretenen Fehler befinden.

Allerdings muss ich zugeben, dass man das auch "eleganter" regeln könnte...

Z.B. nen [int] als Rückgabewert der Funktion/Methode (0 = Alles OK, etc.) und dazu ein (übersetzbares) Dictionary o.ä. um ne Fehlermeldung in [string]-Form zu erhalten.

P.S.: Im zuletzt genannten Fall könnte ggf. sogar die Abfrage "user != null" überflüssig sein... Evtl. könnte man den benutzer auch direkt als [string] an die sendMessageToUser-Methode übergeben...

P.P.S.: Langsam wird's ein wenig "geeky" (Ist das überhaupt n Wort?)... %D

Keine passende Antwort gefunden?

Fragen Sie die Community