JavaFX-tableview显示数据,但保存到文件时,文件为空

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

在我的程序中,我读取一个配置文件(.txt文件),并在tableview中显示内容。这很有效

第二列可以编辑。这用作程序的配置文件。 如果现在保存数据(File-save),则配置文件为空。我不知道,为什么。代码如下:

文件-保存调用以下命令:

    @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项目。我要创建一个罐子并附加它吗?或者我需要做什么?这是我第一次有问题,请帮忙。