0

この組み合わせで使用すると、コードが壊れます: 値の保存、値の削除、値の保存。その値を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つの方法です。これがあなたにとって十分な情報であることを願っています。そして私の言葉が短くてすみません。ちょっと疲れていて、今のところ時間がありません。必要に応じて、これをより詳細に説明できます。しかし、問題がこのコードにあることを願っています。

4

0 に答える 0