-3
public class AddDetails extends Application {
    private final String FileName = "C:\\Users\\marsh\\OneDrive\\Documents\\CustomPrograms\\CalcProb\\Players.txt";
    private String Name;
    private char Hand1, Hand1;
    private double Skill1, Skill2;
    File file = new File(FileName);
    FileOutputStream fos = null;
    Writer writer = null;
    static Stage classStage = new Stage();
    String x = null;

    public AddDetails() {
        Name = "";
        Hand = '\0';
        Skill = 0.0;
        BHand = '\0';
        BSkill = 0.0;
    }

    @SuppressWarnings("restriction")
    @Override
    public void start(Stage myStage) throws IOException {
        classStage = myStage;
        myStage.setTitle("Details");

        GridPane rootNode = new GridPane();
        rootNode.setPadding(new Insets(15));
        rootNode.setHgap(5);
        rootNode.setVgap(5);
        rootNode.setAlignment(Pos.CENTER);

        Scene myScene = new Scene(rootNode, 300, 200);

        rootNode.add(new Label("Name:"), 0, 0);
        TextField name = new TextField();
        rootNode.add(name, 1, 0);
        rootNode.add(new Label("Hand:"), 0, 1);
        TextField hand = new TextField();
        rootNode.add(hand, 1, 1);
        rootNode.add(new Label("Skill:"), 0, 2);
        TextField skill = new TextField();
        rootNode.add(skill, 1, 2);
        rootNode.add(new Label("Skill:"), 0, 3);
        TextField Bskill = new TextField();
        rootNode.add(Bskill, 1, 3);
        rootNode.add(new Label("Hand:"), 0, 4);
        TextField Bhand = new TextField();
        rootNode.add(Bhand, 1, 4);
        Button SButton = new Button("Store");
        rootNode.add(SButton, 1, 5);
        GridPane.setHalignment(SButton, HPos.LEFT);
        Button EButton = new Button("Finish");
        rootNode.add(EButton, 1, 5);
        GridPane.setHalignment(EButton, HPos.RIGHT);
        name.setPromptText("Enter Name");
        hand.setPromptText("Enter Hand );
            skill.setPromptText("Enter Skill");
        Bhand.setPromptText("Enter Hand");
        Bskill.setPromptText("Enter Skill");

        myStage.setScene(myScene);
        myStage.show();

        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
            fos = new FileOutputStream(file, true);
            writer = new OutputStreamWriter(fos, "UTF-8");

            EButton.setOnAction(e -> {
                myStage.close();
                try {
                    writer.close();
                } catch (IOException writerclose) {
                    Alert alert = new Alert(AlertType.ERROR);
                    alert.setTitle("Error");
                    alert.setHeaderText("Error Encountered");
                    alert.setContentText("Error: " + writerclose.getMessage());
                }
            });

            SButton.setOnAction(e -> {
                Name = name.getText();
                Hand = hand.getText().charAt(0);
                Skill = Double.valueOf(skill.getText());
                BSkill = Double.valueOf(Bskill.getText());
                BHand = Bhand.getText().charAt(0);
                Hand = Character.toUpperCase(Hand);
                BHand = Character.toUpperCase(BHand);

                System.out.println(Name + "\t" + Hand + "\t" + Skill + "\t" + BHand + "\t" + BSkill);

                try {

                    writer.write(Name + "\t" + Hand + "\t" + Skill + "\t" + BHand + "\t" + BSkill);

                    name.clear();
                    hand.clear();
                    skill.clear();
                    Bskill.clear();
                    Bhand.clear();

                } catch (IOException br) {

                    Alert alert = new Alert(AlertType.ERROR);
                    alert.setTitle("Error");
                    alert.setHeaderText("Error Encountered");
                    alert.setContentText("Error: " + br.getMessage());

                }
            });
        } catch (IOException e) {
            Alert alert = new Alert(AlertType.ERROR);
            alert.setTitle("Error");
            alert.setHeaderText("Error Encountered");
            alert.setContentText("Error: " + e.getMessage());
        } finally {
            try {
                if (writer != null)
                    writer.close();
                if (fos != null)
                    fos.close();
            } catch (IOException finalclose) {
                Alert alert = new Alert(AlertType.ERROR);
                alert.setTitle("Error");
                alert.setHeaderText("Error Encountered");
                alert.setContentText("Error: " + finalclose.getMessage());
            }
        }
    }

    public static void main(String[] Args) {
        launch(Args);
    }
}
teppic
  • 6,312
  • 1
  • 26
  • 32
  • 4
    Firstly your code is not formatted correctly, secondly, create a minimal, complete and verifiable example: https://stackoverflow.com/help/mcve –  Sep 10 '17 at 21:01

2 Answers2

0

You're closing your output file immediately after it's opened, without writing anything.

The open and close run in your main thread when start is called, while the attempted write happens in the event thread when SButton is clicked.

A simple fix would be to open and close fos in the SButton action listener that is doing the write.

teppic
  • 6,312
  • 1
  • 26
  • 32
0

This is one option of the code.

I think you don't need to be the Writer class as a global variable. You just open and write your contents every time whenever you want to modify your file.

I just fixed some error and made it run.

SButton.setOnAction(e -> {
    //.... skip

    try {
        fos = new FileOutputStream(file, true);
        writer = new OutputStreamWriter(fos, "UTF-8");

        writer.write(Name + "\t" + Hand + "\t" + Skill + "\t" + BHand + "\t" + BSkill);

        name.clear();
        hand.clear();
        skill.clear();
        Bskill.clear();
        Bhand.clear();

        writer.flush();

    } catch (IOException br) {

        Alert alert = new Alert(AlertType.ERROR);
        alert.setTitle("Error");
        alert.setHeaderText("Error Encountered");
        alert.setContentText("Error: " + br.getMessage());

    }
    finally {
        try {
            if (writer != null)
                writer.close();
            if (fos != null)
                fos.close();
        } catch (IOException finalclose) {
            Alert alert = new Alert(AlertType.ERROR);
            alert.setTitle("Error");
            alert.setHeaderText("Error Encountered");
            alert.setContentText("Error: " + finalclose.getMessage());
        }
    }
});

So, the full source is here

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class AddDetails extends Application {
    private final String FileName = "C:\\Users\\marsh\\OneDrive\\Documents\\CustomPrograms\\CalcProb\\Players.txt";
    private String Name;
    private char Hand, BHand;
    private double Skill, BSkill;
    private final File file = new File(FileName);

    static Stage classStage = new Stage();
    String x = null;

    public AddDetails() {
        Name = "";
        Hand = '\0';
        Skill = 0.0;
        BHand = '\0';
        BSkill = 0.0;
    }

    @SuppressWarnings("restriction")
    @Override
    public void start(Stage myStage) throws IOException {
        classStage = myStage;
        myStage.setTitle("Details");

        GridPane rootNode = new GridPane();
        rootNode.setPadding(new Insets(15));
        rootNode.setHgap(5);
        rootNode.setVgap(5);
        rootNode.setAlignment(Pos.CENTER);

        Scene myScene = new Scene(rootNode, 300, 200);

        rootNode.add(new Label("Name:"), 0, 0);
        TextField name = new TextField();
        rootNode.add(name, 1, 0);
        rootNode.add(new Label("Hand:"), 0, 1);
        TextField hand = new TextField();
        rootNode.add(hand, 1, 1);
        rootNode.add(new Label("Skill:"), 0, 2);
        TextField skill = new TextField();
        rootNode.add(skill, 1, 2);
        rootNode.add(new Label("Skill:"), 0, 3);
        TextField Bskill = new TextField();
        rootNode.add(Bskill, 1, 3);
        rootNode.add(new Label("Hand:"), 0, 4);
        TextField Bhand = new TextField();
        rootNode.add(Bhand, 1, 4);
        Button SButton = new Button("Store");
        rootNode.add(SButton, 1, 5);
        GridPane.setHalignment(SButton, HPos.LEFT);
        Button EButton = new Button("Finish");
        rootNode.add(EButton, 1, 5);
        GridPane.setHalignment(EButton, HPos.RIGHT);
        name.setPromptText("Enter Name");
        hand.setPromptText("Enter Hand ");
            skill.setPromptText("Enter Skill");
        Bhand.setPromptText("Enter Hand");
        Bskill.setPromptText("Enter Skill");

        myStage.setScene(myScene);
        myStage.show();


        EButton.setOnAction(e -> {
            myStage.close();

        });

        SButton.setOnAction(e -> {
            Name = name.getText();
            Hand = hand.getText().charAt(0);
            Skill = Double.valueOf(skill.getText());
            BSkill = Double.valueOf(Bskill.getText());
            BHand = Bhand.getText().charAt(0);
            Hand = Character.toUpperCase(Hand);
            BHand = Character.toUpperCase(BHand);
            FileOutputStream fos = null;
            Writer writer = null;

            System.out.println(Name + "\t" + Hand + "\t" + Skill + "\t" + BHand + "\t" + BSkill);

            try {
                fos = new FileOutputStream(file, true);
                writer = new OutputStreamWriter(fos, "UTF-8");

                writer.write(Name + "\t" + Hand + "\t" + Skill + "\t" + BHand + "\t" + BSkill);

                name.clear();
                hand.clear();
                skill.clear();
                Bskill.clear();
                Bhand.clear();

                writer.flush();

            } catch (IOException br) {

                Alert alert = new Alert(AlertType.ERROR);
                alert.setTitle("Error");
                alert.setHeaderText("Error Encountered");
                alert.setContentText("Error: " + br.getMessage());

            }
            finally {
                try {
                    if (writer != null)
                        writer.close();
                    if (fos != null)
                        fos.close();
                } catch (IOException finalclose) {
                    Alert alert = new Alert(AlertType.ERROR);
                    alert.setTitle("Error");
                    alert.setHeaderText("Error Encountered");
                    alert.setContentText("Error: " + finalclose.getMessage());
                }
            }
        });

    }

    public static void main(String[] Args) {
        launch(Args);
    }
}

The input variable is the picture below,

enter image description here

The saved file looks like as follows,

enter image description here

Regards,

tommybee
  • 2,175
  • 1
  • 17
  • 23