In my program I read a config file (.txt file) and show the content in a tableview. That works.
The second column can be edited. This serves as a config file for the program. If I now save the data (File - Save) the config file is empty. I have no idea, why. Here is the code:
File - Save calls this:
@FXML
public void saveConfig() throws IOException {
System.out.println("File - Save clicked");
SCDConfigDataAccess configData = new SCDConfigDataAccess();
configData.saveData(SCDController.configFile);
closeConfig();
}//saveConfig
and configData.saveData does this:
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
I get these messages:
File - Save clicked
File: C:\Users\Michael\AppData\Local\SCD\scdconfig.ini
These are expected and correct.
I do not get a message out of the for-loop. That lets me think there is no data. But why? I see the data.
I'm sure I'm just missing a little thing. Any help is appreciated.
The config file was 127 bytes when I read it and is now 0.
Thanks,
Michael
I figured it out. The problem was this line of code in the method saveConfig() of the controller
SCDConfigDataAccess configData = new SCDConfigDataAccess();
This creates a new instance and this does not have a connection to the data. Instead of doing this I use the instance defined in the controller class itself like so:
public class SCDConfigController {
private SCDConfigDataAccess configDataAccess;
public void saveConfig() throws IOException {
configDataAccess.saveData(SCDController.configFile);
closeConfig();
}//saveConfig
And this of course works.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments