Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecrire dans une fichier .txt

après fermeture du fichier, des "NULL" s'y glissent

Sujet résolu
    14 janvier 2011 à 10:22:15

    Bonjour,
    pour objectif de récupérer les données d'un fichier XML et de les recopier dans un fichier .txt sans balise.

    Tout se passe bien jusqu'à écrire dans les fichiers textes. Une fois le programme terminé, en ouvrant le fichier texte avec Bloc Notes je m'aperçois qu'il y a un espace entre chaque caractère (qui apparaissent tous soit dit en passant).
    Je l'ouvre donc avec Notepad++ qui lui m'affiche un "NULL" blanc surligner en noir entre chaque caractère.
    Je me dis donc que le recopiage n'est pas bon, soit que j'utilise pas la bonne classe, ou alors qu'il faut absolument utiliser un buffer !?

    J'utilise la classe ObjectOutputStream pour écrire dans les fichiers, avec la méthode writeChars. J'ai aussi utilisé DataOutputStream mais ça ne change rien.

    Voici mon code:
    public static void analyseXML() throws IOException
    	{
    		File fxml = new File(".\\src\\test.xml");
    		File fuser = new File(".\\src\\user.txt");
    		File fgroup = new File(".\\src\\groupe.txt");
    		String ligne = "";
    		String id;
    		String mail;
    		String nom;
    		String prenom;
    		String groupe;
    		String nomSociete;
    		String ligneEchange;
    		String tmp="";
    		
    
    		RandomAccessFile rxml = new RandomAccessFile(fxml,"r");
    		ObjectOutputStream fosuser = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fuser))); //Déclaration des objets
    		ObjectOutputStream fosgroup = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fgroup))); //Déclaration des objets
    
    						
    		while((ligne = rxml.readLine())!=null)
    		{
    			id = recupererChaine(ligne,"<dn>uid=","</dn>");
    			if(id!=null)
    			{
    				if(id.charAt(0)=='a')
    				{
    					ligneEchange = recupererChaine(ligne,"<name>givenname</name><ldapvalues><value>","</value>");
    					nomSociete = recupererChaine(ligne,"<name>sncompanyname</name><ldapvalues><value>","</value>");
    					
    					if(ligneEchange!=null && nomSociete!=null)
    						fosgroup.writeChars(ligneEchange + ";" + nomSociete + ";" + id + ";\n"); //ECRITURE
    
    				}
    				else
    				{
    					System.out.println(id);
    					prenom = recupererChaine(ligne,"<name>givenname</name><ldapvalues><value>","</value>");
    					nom = recupererChaine(ligne,"<name>sn</name><ldapvalues><value>","</value>");
    					groupe = recupererChaine(ligne,"<name>groupe</name><ldapvalues>","</ldapvalues>");
    					if(prenom!=null && nom!=null && groupe!=null && id!=null)
    					{
    						fosuser.writeChars(prenom + ";" + nom + ";" + id + ";");//ECRITURE
    						while(!groupe.contains("<value>"))
    						{
    							System.out.println("\t" + groupe);
    							tmp=recupererChaine(groupe,"<value>","</value>");
    							fosuser.writeChars(tmp + ";");
    							groupe=groupe.replaceFirst("<value>" + tmp + "</value>", "");//ECRITURE
    						}
    						fosuser.writeChars("\n");//ECRITURE
    					}
    				}
    			}
    		}
    			
    			
    		rxml.close();
    		fosuser.close();
    		fosgroup.close();
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter

    Ecrire dans une 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