この組み合わせで使用すると、コードが壊れます: 値の保存、値の削除、値の保存。その値を2回目に保存すると、削除された値が追加されます。したがって、構成 1、2、3、4 を保存し、3 を削除して 5 を保存すると、3 が保存され、3 を削除しても最終値が 1,2,3,4,5 になります。
ここに私が重要だと思うコードがあります
/**
* This is the save class.
* This class contains the action for when the user clicks on the save button.
*/
package controller;
/**
* These are the imports for the class.
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import model.ModelFacade;
public class Save {
/**
* These are the fields for the class.
*/
ModelFacade mf = new ModelFacade();
Properties prop = new Properties();
/**
* This method sets the entered value for the matching property.
*
* @param property
* @param value
*/
public void setPropertyValue(String property, String value) {
try {
try{
//set the properties value
FileInputStream fis = new FileInputStream("config.properties");
prop.load(fis);
fis.close();
prop.setProperty(property, value);
}
catch (IOException ex) {
}
//save properties to project root folder
FileOutputStream fos = new FileOutputStream("config.properties");
prop.store(fos, null);
fos.close();
System.out.println("saved " + property + " as " + value);
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* This is the delete class.
* This class contains the action for when the user clicks on the delete button.
*/
package controller;
/**
* These are the imports of the class.
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;
import model.ModelFacade;
public class Delete {
/**
* These are the fields of the class.
*/
ModelFacade mf = new ModelFacade();
Properties prop = new Properties();
/**
* This method deletes the values of the selected config.
*
* @param config
*/
public void deleteAction(String config) {
if(mf.checkProperty() == true){
try {
FileInputStream fis = new FileInputStream("config.properties");
prop.load(fis);
fis.close();
@SuppressWarnings("rawtypes")
Enumeration em = prop.keys();
int i = 0;
while(em.hasMoreElements()){
Object obj = em.nextElement();
String str = (String)obj;
//If the property contains the configuration name in its name it will be deleted.
if(str.endsWith(config)){
i++;
System.out.println("Deleted: "+str);
prop.remove(str);
FileOutputStream fos = new FileOutputStream("config.properties");
prop.store(fos, null);
fos.close();
}
}
//The system prints a message of the missing configuration.
if(i < 1){
System.out.println("The configuration could not be found.");
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
//The system prints a message that the property file could not be found.
else{
System.out.println("The property file could not be found.");
}
}
}
これらは、使用されている2つの方法です。これがあなたにとって十分な情報であることを願っています。そして私の言葉が短くてすみません。ちょっと疲れていて、今のところ時間がありません。必要に応じて、これをより詳細に説明できます。しかし、問題がこのコードにあることを願っています。