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 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 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 : 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++; } } } }
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 prefererai
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(); } }
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








Répondre avec citation
Partager