Partage
  • Partager sur Facebook
  • Partager sur Twitter

Seralisation dans un fichier txt

Sujet résolu
    30 mars 2020 à 11:56:19

    Bonjour,

    J'ai réalisé une sérialisation dans un fichier est ça marche, il y a juste un soucis, c'est que dans le fichier j'ai des caractères spéciaux et les mots sont presque invisibles !

    Est-ce un problème d'encodage ?
    Merci

    package com.me;
    
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.lang.reflect.Array;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.DuplicateFormatFlagsException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    /**
     * Implémentation dd la classe ReadDataFromFile
     *
     */
    public class ReadDataFromFile {
    
    	/**
    	 * Récupérer le fichier de la liste, le mettre dans une HashMap 'frequency' 
    	 * 
    	 */
    	
    
    	
    	public  Map<String, Integer> getList(){
    		/**
    		 * Map<String, Integer> getlist() retourn la liste le nombre des occurences
    		 * @return la liste de nombre des occurences
    		 */
    		
    		Map<String, Integer> frequency = new HashMap<>();
    		
    		/**
    		 * Lever une exception si le transfert du data est mis en échec 
    		 * 
    		 */
    		try {
    			Path path = Paths.get(System.getProperty("user.dir"))
    					.resolve(config.inputLink);
    			BufferedReader reader;
    			reader = new BufferedReader(new FileReader(path.toFile()));
    	
    			/**
    			 * déclarer un reader et l'affecter à un string 'line'
    			 * 
    			 */
    		String line = reader.readLine();
    		
    		/**
    		 * Si line n'est pas null boucler sur frequency 
    		 * compter le nombre des occurence de 'line' dans la liste  frequency
    		 * Si pas d'occurence ne pas incrémenter l'occurence '(line, 1)'
    		 * 
    		 */
    		while(line != null) {
    					
    					if(frequency.containsKey(line)) {
    						frequency.put(line, 
    								frequency.get(line) + 1);
    					} else {
    						frequency.put(line, 1);
    					}
    			
    			line = reader.readLine();
    		}
    		
    		System.out.println("SIMO" + frequency);
    		
    		/**
    		 * Instantier un objet file, 
    		 * Indiquer le fichier de sortie dans l'attribut 'config.outOccurences'
    		 * 
    		 * @see config
    		 * 
    		 */
    		 
    		 FileOutputStream fileOut=new FileOutputStream(config.outOccurences);
    	        ObjectOutputStream out=new ObjectOutputStream(fileOut);
    	        
    
    	        out.writeObject(frequency);
    	        out.close();
    	        
    	        /**
    			 * Afficher la liste finale des  occurences dans une MapList
    			 *  
    			 */
    		 
    		 for(Map.Entry<String, Integer> items : frequency.entrySet()) {
    			 
    			System.out.println(items.getKey() + " " + items.getValue());
    			
    		 }
    		
    		
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
           
    		return frequency;
    		
    	}
    
    	
    	
    	
    }
    	
    	



    • Partager sur Facebook
    • Partager sur Twitter

    Nobody is perfect I'm Nobody...

      30 mars 2020 à 17:32:47

      C'est normal, c'est un encodage spécial java, comme touts les formats (.exe, .pdf, etc...)

      -
      Edité par Smooki 30 mars 2020 à 17:33:33

      • Partager sur Facebook
      • Partager sur Twitter

      On n'aime pas ce qu'on ne comprend pas 

        1 avril 2020 à 18:54:06

        OK, donc je ne peux pas le rendre visite comme dans le fichier d'entrée ?
        • Partager sur Facebook
        • Partager sur Twitter

        Nobody is perfect I'm Nobody...

          1 avril 2020 à 19:09:44

          Bonjour,

          Si tu veux des fichiers lisibles par les humains, tu peux utiliser des formats comme xml ou json.

          Ne recode pas tout toi-même, il existe des bibliothèques pour gérer ces formats.

          • Partager sur Facebook
          • Partager sur Twitter
            5 avril 2020 à 9:22:23

            J'ai finalement utilisé le jar "json-simple" ça marche très bien

            Merci !

            -
            Edité par Linus_11 5 avril 2020 à 9:22:43

            • Partager sur Facebook
            • Partager sur Twitter

            Nobody is perfect I'm Nobody...

            Seralisation dans un fichier txt

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown