JavaFX-tableview显示数据,但保存到文件时,文件为空
在我的程序中,我读取一个配置文件(.txt文件),并在tableview中显示内容。这很有效 第二列可以编辑。这用作程序的配置文件。 如果现在保存数据(File-save),则配置文件为空。我不知道,为什么。代码如下: 文件-保存调用以下命令:JavaFX-tableview显示数据,但保存到文件时,文件为空,javafx,tableview,bufferedwriter,Javafx,Tableview,Bufferedwriter,在我的程序中,我读取一个配置文件(.txt文件),并在tableview中显示内容。这很有效 第二列可以编辑。这用作程序的配置文件。 如果现在保存数据(File-save),则配置文件为空。我不知道,为什么。代码如下: 文件-保存调用以下命令: @FXML public void saveConfig() throws IOException { System.out.println("File - Save clicked"); SCDConfigDataAccess
@FXML
public void saveConfig() throws IOException {
System.out.println("File - Save clicked");
SCDConfigDataAccess configData = new SCDConfigDataAccess();
configData.saveData(SCDController.configFile);
closeConfig();
}//saveConfig
和configData.saveData执行以下操作:
public class SCDConfigDataAccess {
private static ObservableList<SCDConfigData> scdConfig;
public void saveData(File configFile) throws IOException {
BufferedWriter bw = Files.newBufferedWriter(Paths.get(configFile.getPath()));
String output = "";
System.out.println("File: " + configFile.getPath());
try {
for (SCDConfigData data : scdConfig) {
output = data.getsConfigType() + "=" + data.getsConfigValue() + "\n";
System.out.println("Data: " + output);
bw.write(output); }
bw.flush();
bw.close();
}catch(IOException e){ System.out.println("Error: " + e.getMessage()); }
} //saveData
}//class
公共类SCDConfigDataAccess{
私有静态可观察列表scdConfig;
公共void saveData(文件configFile)引发IOException{
BufferedWriter bw=Files.newBufferedWriter(path.get(configFile.getPath());
字符串输出=”;
System.out.println(“文件:”+configFile.getPath());
试试{
对于(SCDConfigData数据:scdConfig){
输出=数据。getsConfigType()+“=”+数据。getsConfigValue()+“\n”;
System.out.println(“数据:+输出);
写入(输出);}
bw.flush();
bw.close();
}catch(IOException e){System.out.println(“错误:+e.getMessage());}
}//保存数据
}//阶级
我收到这些信息:文件-单击保存
文件:C:\Users\Michael\AppData\Local\SCD\scdconfig.ini 这些都是预期的和正确的 我没有从for循环中得到消息。这让我觉得没有数据。但是为什么呢?我看到了数据 我肯定我错过了一件小事。感谢您的帮助。
当我读取配置文件时,它是127字节,现在是0 谢谢
迈克尔我明白了。问题在于控制器的saveConfig()方法中的这行代码
SCDConfigDataAccess configData = new SCDConfigDataAccess();
这将创建一个新实例,并且该实例与数据没有连接。我没有这样做,而是使用控制器类本身中定义的实例,如下所示:
public class SCDConfigController {
private SCDConfigDataAccess configDataAccess;
public void saveConfig() throws IOException {
configDataAccess.saveData(SCDController.configFile);
closeConfig();
}//saveConfig
这当然有效。请。我已经创建了这个示例。我怎么到这里来?这是一个maven项目。我要创建一个罐子并附加它吗?或者我需要做什么?这是我第一次有问题,请帮忙。