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
Ma classCode:
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(); } }); }
Tout ceci marche parfaitement bien.Code:
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++; } } } }
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..):
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 prefereraiCode:
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(); } }
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

