Plugin Java: problème de Fichiers dans un plugin !

Luca_008

Architecte en herbe
21 Novembre 2016
150
20
125
22
Bonsoir,

J'aimerais faire un plugin qui dans la méthode OnEnable() créer un fichier "Mémoire" ou "Stockage", et le rendre invisible au utilisateurs du plugin (Genre car c'est un simple stockage d'infos, genre Map, List et j'en passe. Mais que les utilisateurs ne verront pas donc ne pourront pas modifier(Ce qui entraînerait des bugs de mon plugin)). Je connais le proccessus pour le rendre invisible j'ai même fais des tests avec la méthode .isHidden(), mon fichier est bien caché à 1ère vue, mais quand je veux ajouter quelque chose dans le fichier depuis une commande que les utilisateurs pourront faire ingame, ils me disent que le chemin du fichier est trouvable mais que l'accès est refusé, mes codes :

1) Rendre le fichier caché :
Code:
        File test = new File("plugins/MyPlugin/Caché.yml");
        try {
            test.createNewFile();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {
            Process p = Runtime.getRuntime().exec("attrib +h " + test.getPath());
            try {
                p.waitFor();
            } catch (InterruptedException e1) {
                e1.printStackTrace();
           }

2) Accès au Fichier "Caché.yml":
Code:
            File hide = new File("plugins/MyPlugin/Caché.yml");
            FileConfiguration hideConfig = YamlConfiguration.loadConfiguration(hide);

3) Ajout et sauvegarde d'un String dans "Caché.yml":
Code:
            hideConfig.set("hidden", "coucou");
            try {
                hideConfig.save(hide);
            } catch(IOException e){
                System.out.println("Error");
                e.printStackTrace();
            }

4) Erreur en console lors du Try/Catch pour Sauvegarder le String
Code:
[21:43:59 INFO]: Error
[21:43:59 WARN]: java.io.FileNotFoundException: plugins\MyPlugin\CachÚ.yml (AccÞs refusÚ)
[21:43:59 WARN]:        at java.io.FileOutputStream.open0(Native Method)
[21:43:59 WARN]:        at java.io.FileOutputStream.open(Unknown Source)
[21:43:59 WARN]:        at java.io.FileOutputStream.<init>(Unknown Source)
[21:43:59 WARN]:        at java.io.FileOutputStream.<init>(Unknown Source)
[21:43:59 WARN]:        at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguration.java:70)
[21:43:59 WARN]:        at me.Luca008.MyPlugin.MyCommand.onCommand(MyCommand.java:180)
[21:43:59 WARN]:        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[21:43:59 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[21:43:59 WARN]:        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645)
[21:43:59 WARN]:        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchServerCommand(CraftServer.java:631)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.DedicatedServer.aL(DedicatedServer.java:438)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:401)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559)
[21:43:59 WARN]:        at java.lang.Thread.run(Unknown Source)

Voilà tout. Ou alors si vous avez une solution pour créer un lieu de stockage que les utilisateurs ne peuvent pas modifier, je suis prenneur. Merci d'avance :p

Bonne soirée,
Luca_008
 

DiscowZombie

Développeur
Staff
Modérateur
Support
2 Mars 2017
2 659
1
931
298
Alsace
www.discowzombie.fr
Bonsoir,

J'aimerais faire un plugin qui dans la méthode OnEnable() créer un fichier "Mémoire" ou "Stockage", et le rendre invisible au utilisateurs du plugin (Genre car c'est un simple stockage d'infos, genre Map, List et j'en passe. Mais que les utilisateurs ne verront pas donc ne pourront pas modifier(Ce qui entraînerait des bugs de mon plugin)). Je connais le proccessus pour le rendre invisible j'ai même fais des tests avec la méthode .isHidden(), mon fichier est bien caché à 1ère vue, mais quand je veux ajouter quelque chose dans le fichier depuis une commande que les utilisateurs pourront faire ingame, ils me disent que le chemin du fichier est trouvable mais que l'accès est refusé, mes codes :

1) Rendre le fichier caché :
Code:
        File test = new File("plugins/MyPlugin/Caché.yml");
        try {
            test.createNewFile();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {
            Process p = Runtime.getRuntime().exec("attrib +h " + test.getPath());
            try {
                p.waitFor();
            } catch (InterruptedException e1) {
                e1.printStackTrace();
           }

2) Accès au Fichier "Caché.yml":
Code:
            File hide = new File("plugins/MyPlugin/Caché.yml");
            FileConfiguration hideConfig = YamlConfiguration.loadConfiguration(hide);

3) Ajout et sauvegarde d'un String dans "Caché.yml":
Code:
            hideConfig.set("hidden", "coucou");
            try {
                hideConfig.save(hide);
            } catch(IOException e){
                System.out.println("Error");
                e.printStackTrace();
            }

4) Erreur en console lors du Try/Catch pour Sauvegarder le String
Code:
[21:43:59 INFO]: Error
[21:43:59 WARN]: java.io.FileNotFoundException: plugins\MyPlugin\CachÚ.yml (AccÞs refusÚ)
[21:43:59 WARN]:        at java.io.FileOutputStream.open0(Native Method)
[21:43:59 WARN]:        at java.io.FileOutputStream.open(Unknown Source)
[21:43:59 WARN]:        at java.io.FileOutputStream.<init>(Unknown Source)
[21:43:59 WARN]:        at java.io.FileOutputStream.<init>(Unknown Source)
[21:43:59 WARN]:        at org.bukkit.configuration.file.FileConfiguration.save(FileConfiguration.java:70)
[21:43:59 WARN]:        at me.Luca008.MyPlugin.MyCommand.onCommand(MyCommand.java:180)
[21:43:59 WARN]:        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
[21:43:59 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[21:43:59 WARN]:        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645)
[21:43:59 WARN]:        at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchServerCommand(CraftServer.java:631)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.DedicatedServer.aL(DedicatedServer.java:438)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:401)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660)
[21:43:59 WARN]:        at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559)
[21:43:59 WARN]:        at java.lang.Thread.run(Unknown Source)

Voilà tout. Ou alors si vous avez une solution pour créer un lieu de stockage que les utilisateurs ne peuvent pas modifier, je suis prenneur. Merci d'avance :p

Bonne soirée,
Luca_008

Je n'en suis pas du tout sûre, mais essaye de renommer ton fichier sans caractères spéciaux. Le "é" posse peut-être des problèmes ;)