IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Écrire une variable dans un fichier texte


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Écrire une variable dans un fichier texte
    Bonjour à tous,

    Voilà depuis plusieurs heures je suis confronté à un problème, j'ai un programme JAVA qui envoie une Query JSON (Ouvrable en txt). Ce que je cherche à faire c'est que le programme Java puisse modifier automatiquement cette query, sans à avoir à aller dans le fichier txt à chaque fois (A l'aide d"un BufferedWriter, Bufferedreader et un Scanner), mais impossible. Est il possible de mettre une variable dans un fichier txt et que mon programme JAVA envoie la chaîne de caractère et que cette dernière sois injecté dans le txt à la place de la variable.

    Merci de vos réponses !
    Bonne journéee

  2. #2
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    tu pourrais faire quelque chose comme ceci:

    Ton fichier query.json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {
      "unChamp" : "MA_VARIABLE",
      "unAutreChamp" : 10, 
      ....
    }
    Ensuite quand tu lis ce fichier au complet dans un String, tu peux ensuite modifier des parties:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String jsonText = ..... // Lire le fichier query.json
    String myVar = "leContenu";
    jsonText = jsonText.replace("MA_VARIABLE", myVar);

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Remplacer du texte par du texte risque de poser différents soucis en fonction du json à traiter. En plus, je suppose qu'il s'agit de remplacer la valeur d'une propriété du json et non de remplacer le nom d'une propriété.

    Le plus simple serait de passer par un parser (Jackson, Gson, json.simple...) et de maintenir l'objet en mémoire pour le modifier à chaque envoi.

    A la limite, on peut même se passer de parser, en utilisant nashorn :
    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
    public class Demo {
     
    	public static void main(String[] args) {
     
    		String json = load();
     
    		System.out.println("JSON chargé : "+json);
     
    		json = setVariable(json, "var1","'yyy'");
    		System.out.println("JSON var1 modifiée : "+json);
     
    		json = setVariable(json, "var2","100");
    		System.out.println("JSON var2 modifiée : "+json);
     
    	}
     
    	private static String setVariable(String json, String var, String value) {
    		ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
     
    		StringBuilder sb = new StringBuilder("function modify() {");
    		sb.append("data=").append(json).append(";");
    		sb.append("data.").append(var).append("=").append(value).append(";");
    		sb.append("return JSON.stringify(data,null,4);}");
    		try {
    			engine.eval(sb.toString());
    			return String.valueOf(((Invocable)engine).invokeFunction("modify", json, var, value));
    		} catch (NoSuchMethodException | ScriptException e) {
    			throw new RuntimeException(e);
    		}
     
    	}
     
    	private static String load() {
    		try {
    			return Files.lines(Paths.get("json.txt")).collect(Collectors.joining("\n"));
    		} catch (IOException e) {
    			throw new UncheckedIOException(e);
    		}
    	}
     
    }
    Résultat
    JSON chargé : {
      "var1":"xxx",
      "var2":42
    }
    JSON var1 modifiée : {
        "var1": "yyy",
        "var2": 42
    }
    JSON var2 modifiée : {
        "var1": "yyy",
        "var2": 100
    }
    Et s'il s'agit de patcher un json, utiliser une expression régulière, ou String.format().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre confirmé
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Points : 580
    Points
    580
    Par défaut
    > Le plus simple serait de passer par un parser

    Pas nécessairement. Étant donné le peu d'informations sur la structure du json et sur le texte à changer (ex: y a t il des " ), j'ai donné la solution la plus simple et plus courte de juste remplacer du texte directement.
    S'il y d'autres besoins plus poussés, alors oui, utiliser un parser ou ton autre solution devient le nouveau "plus simple".

    Bonne journée

Discussions similaires

  1. Incrémentation d'une variable dans un fichier .txt
    Par beber005 dans le forum Général Java
    Réponses: 9
    Dernier message: 10/04/2013, 10h23
  2. Stockage de variable dans un fichier .txt
    Par kermitdive dans le forum Langage
    Réponses: 3
    Dernier message: 30/07/2011, 17h42
  3. Réponses: 9
    Dernier message: 21/05/2007, 00h33
  4. Réponses: 5
    Dernier message: 21/10/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo