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);
}
}
Q
作家不写任何文件
-3
A
回答
0
你正在关闭你的输出文件,打开后立即没有写任何东西。
调用start
时,主线程中的打开和关闭运行,而点击SButton
时尝试写入发生在事件线程中。
一个简单的修复方法是打开和关闭SButton
动作侦听器中的fos
进行写操作。
0
这是代码的一个选项。
我认为你不需要是Writer类作为一个全局变量。 只要你想修改你的文件,你就可以每次打开和写入你的内容。
我只是修复了一些错误并使其运行。
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());
}
}
});
所以,完整的源代码是在这里
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);
}
}
输入变量是下面的图片,
保存的文件看起来像如下,
Regards,
相关问题
- 1. PHPExcel不写任何文件
- 2. 缓冲作家不写文本?
- 3. 的BufferedWriter不写,甚至冲洗后作家为.txt文件
- 4. PHPUnit的作曲家找不到文件
- 5. 作曲家找不到配置文件
- 6. 成功的写并不会在文件上写任何东西
- 7. 作曲家Paysafe任何版本?
- 8. 即使文件存在,作曲家也找不到composer.json文件
- 9. htaccess文件与重写在任何域上工作
- 10. 参与linux中任何文件读/写操作的步骤
- 11. Python的CSV作家 - 写在新的CSV文件列高达CSV文件
- 12. 如何实现独家写作,但非独家阅读?
- 13. 作曲家错误无法打开输入文件:作曲家
- 14. 找不到任何文件
- 15. Magento2作曲家安装不是从锁文件 工作
- 16. 将函数写入文件,得不到任何
- 17. 这段代码为什么不写任何东西到文件
- 18. Python脚本创建一个文件,但不写任何东西
- 19. Windows 8商店应用程序XmlWriter不会写任何文件
- 20. fputcsv不写入CSV文件中的任何数据
- 21. 写作HQL文件
- 22. 是否可以使用PLINQ写入XmlWriter?任何其他流/作家?
- 23. 不写文件
- 24. 耙文件任务不起作用
- 25. 任何替代方式写入文件以外的文件
- 26. openoffice编写器java sdk替换作家文档中的文本
- 27. .htaccess文件重新写不起作用
- 28. MappedByteBuffer写入文件不起作用
- 29. 在Applescript中写入文件 - 不工作
- 30. 写作文件而不溢出
首先你的代码格式不正确,其次,创建一个最小的,完整的和可验证的例子:https://stackoverflow.com/help/mcve – Lichtbringer