Bonjour,
Je cherche comment recharge des données d'un fichier .json que je charge au lancement de mon application java.

Voici comment je charge mon dossier qui contient mes fichier .json
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Dans mon Main :
private void setupConfigs() {
 
        MouseListener.executorService.execute(() -> {
 
            try {
                if (new File(CONFIG_DIR).mkdir()) {
                }
                File file = new File(DEFAULT_CONFIG);
                if (!file.exists()) {
                    FileWriter fileWriter = new FileWriter(file);
                    gson.toJson(new Config(), fileWriter);
                    fileWriter.close();
                }
 
 
                ConfigManager1.getInstance1().readConfigs();
                ConfigManager2.getInstance2().readConfigs();
 
            } catch (IOException e) {
                e.printStackTrace();
            }
        });
    }
Ma class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
 
 
public class ConfigManager1 {
 
  public static ArrayList<Config> configs = new ArrayList<>();
  private static ConfigManager1 ourInstance1 = new ConfigManager1();
  int currentConfig = 0;
 
  private ConfigManager1() {
 
  }
 
  public static ConfigManager1 getInstance1() {
    return ourInstance1;
  }
 
  public void readConfigs() {
    configs.clear();
    Gson gson = new GsonBuilder().setPrettyPrinting().create();
    File dir = new File(Main.CONFIG_DIR);
    File[] files = dir.listFiles();
    if (files != null) {
      for (File file : files) {
        try {
          BufferedReader br = new BufferedReader(new FileReader(file));
          Config config = gson.fromJson(br, Config.class);
          config.name = file.getName().replace(".json", "");
          configs.add(config);
          System.out.println("Loaded Config-1:\n" + gson.toJson(config));
          br.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
 
      }
    }
  }
 
  public Config getCurrentConfig() {
    if (configs.size() <= 0) {
      return new Config();
    } else {
      return configs.get(currentConfig);
    }
  }
 
  public void cycleConfigs() {
    if (configs != null && configs.size() > 0) {
      if (currentConfig == configs.size() - 1) {
        currentConfig = 0;
      } else {
        currentConfig++;
      }
    }
  }
 
}
Tout ceci marche parfaitement bien.

Ce que je voudrai pouvoir faire c'est prendre un compte la modification a chaud d'un paramettre dans le fichier .json que l'utilisateur ferai.

j'ai reflechis a deux solution :

Premiere :

Redemarre mon apps (peu etre redemarre mon Main serai plus judicieux et moins lourd..):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 if (e.getKeyCode() == NativeKeyEvent.VC_F11) {
        System.out.println("Exit/CloseApps");
        try {
          GlobalScreen.unregisterNativeHook();
          MouseListener.executorService.shutdown();
 
            try {
                Runtime.getRuntime().exec("java -jar Monapps.jar");  // Mode test ----  NB: Ne pas oublier de change le bind de restart
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            System.exit(1);
        } catch (NativeHookException e1) {
          e1.printStackTrace();
        }
      }
Probleme : je n'arrive pas a créer un fichier qui garde en mémoire l'état de mon apps avant fermeture et la relance la ou elle en etais. Solution que je prefererai


deuxieme :
Via mon keylistener, recharger les données des fichier json ou que ca se fasse automatiquement.



Je vous remercie d'avance de l'aide apporte.

Cordialement

Fred