Code qui ajoute "NULL" qd lecture fichier txt

azerty_qwerty 21 Messages postés vendredi 23 mars 2018Date d'inscription 16 mai 2018 Dernière intervention - 8 mai 2018 à 23:27 - Dernière réponse : KX 15433 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 mai 2018 Dernière intervention
- 16 mai 2018 à 19:46
Bonjour,

Lors de l'execution du programme, je lis un fichier text qui contient un chemin d'accès à un dossier. Je stocke ce chemin d'accès (
texte
) dans un String
Fenetre1.CheminDossierBou
. Malheureusement ce chemin d'accès ne peut être exploité car il y a systématiquement à la fin le mot "NULL" ....
/Users/moi/eclipse-workspace/JAVA/DOSSIERS BOU/null
???!!

Voici le code ci dessous :
http://codes-sources.commentcamarche.net/source/15384-ecrire-lire-un-string-dans-un-fichier-avec-des-bufferedwriter-et-bufferedreader


public  class Lireetecrire 
{
//fonction ecrire void = la fonction ne retourne rien
//mais prend comme argument la chaine de charactere(Sring) texte qui correspond a texteaecrire
public static void ecrire(String texte)
{
//on va chercher le chemin et le nom du fichier et on me tout ca dans un String
String adressedufichier = System.getProperty("user.dir") + "\\cheminDossier.txt";

// je supprime le fichier dans un premier temps pour éviter qu'il contienne plusieurs chemins
File fichier = new File(adressedufichier);
fichier.delete();
//on me try si jamais il y a une exception \\
try
{
//BufferedWriter a besoin d un FileWriter,
//les 2 vont ensemble, on donne comme argument le nom du fichier
//true signifie qu on ajoute dans le fichier (append), on ne marque pas par dessus
FileWriter fw = new FileWriter(adressedufichier, true);

// le BufferedWriter output auquel on donne comme argument le FileWriter fw cree juste au dessus
BufferedWriter output = new BufferedWriter(fw);

//on marque dans le fichier ou plutot dans le BufferedWriter qui sert comme un tampon(stream)
output.write(texte);
//on peut utiliser plusieurs fois methode write

output.flush();
//ensuite flush envoie dans le fichier, ne pas oublier cette methode pour le BufferedWriter

output.close();
//et on le ferme

}
catch(IOException ioe){System.out.println("erreur : " + ioe );}
//on "catch" l exception ici si il y en a une, et on l affiche sur la console

}

//je vais moins commenter cette partie c'est presque la meme chose
public static void lire()
{
try
{
String adressedufichier = System.getProperty("user.dir") + "\\cheminDossier.txt";
FileReader fr = new FileReader(adressedufichier);
BufferedReader br = new BufferedReader(fr);
String texte = "";
int a = 0;
while(a<2) //petite boucle 2 fois
{
texte = texte + br.readLine() + "\n";
a++;
}
br.close();

//readLine pour lire une ligne
//note: si il n y a rien, la fonction retournera la valeur null

Fenetre1.CheminDossierBou = texte ;

System.out.println(texte);
//on affiche le texte

}
catch(IOException ioe){System.out.println("erreur : " + ioe);}
}
Afficher la suite 

Votre réponse

3 réponses

KX 15433 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 mai 2018 Dernière intervention - 10 mai 2018 à 22:32
0
Utile
Bonjour,

Plusieurs commentaires sur cette source mentionnent des imperfections, notamment celui-ci sur le null :
https://codes-sources.commentcamarche.net/forum/affich-7015384#19

Cependant, je ne vois pas l'intérêt de discuter d'un code de 2002...
Voici comment faire avec une version récente de Java :

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

public class Test {

    public static void main(String[] args) throws IOException {
        String fileName = "/Users/moi/test.txt";
        writeOneLine(fileName, "/Users/moi/eclipse-workspace/JAVA/DOSSIERS BOU/");
        String line = readOneLine(fileName);
        System.out.println(line); // /Users/moi/eclipse-workspace/JAVA/DOSSIERS BOU/
    }

    public static void writeOneLine(String fileName, String text) throws IOException {
        Files.write(Paths.get(fileName), Arrays.asList(text));
    }

    public static String readOneLine(String fileName) throws IOException {
        return Files.readAllLines(Paths.get(fileName)).get(0);
    }
}
Commenter la réponse de KX
azerty_qwerty 21 Messages postés vendredi 23 mars 2018Date d'inscription 16 mai 2018 Dernière intervention - 16 mai 2018 à 17:53
0
Utile
Bonjour, Merci pour la réponse. Mais j'ai eu du mal à utiliser le code. éclipse me demande une méthode pour le "Path" et ne reconnais pas import nio.
Du coup j'ai trouvé un autre code : https://www.ukonline.be/programmation/java/tutoriel/chapitre12/page4.php


double[] data = {15.9, 21.2, 18.4, 25.4, 31.1};
File f = new File ("temperatures");

try
{
PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter (f)));

for (double d : data)
{
pw.println (d);
}

pw.close();
}
catch (IOException exception)
{
System.out.println ("Erreur lors de la lecture : " + exception.getMessage());
}
KX 15433 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 mai 2018 Dernière intervention - 16 mai 2018 à 19:46
"éclipse me demande une méthode pour le "Path" et ne reconnais pas import nio."
Tu dois utiliser une vieille version de Java pour avoir ce comportement...
Les classes java.nio.file existent depuis Java 7 (sorti en 2011).

Quant à mon code il est écrit en Java 8 et à un petit détail près il pourrait fonctionner en Java 7.
Mais si tu es sur une version Java 6 ou moins, il faut absolument te mettre à jour.
Commenter la réponse de azerty_qwerty

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.