Lecture/Ecriture fichier java

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

Lecture/Ecriture fichier java

par Rockleader » 20 Mai 2015, 18:22

Bonsoir, pouvez vous m'aidez à comprendre la chose suivante

J'ai utilisé la fonction suivante pour écrire dans un fichier les informations que je voulais

Code: Tout sélectionner
public void savePartie() throws IOException{
   FileWriter writer = null;
   String texte = this.g.size +"\n"+
   this.j1.rockTaken+"\n"+
         this.j2.rockTaken+"\n"+
   this.g.afficheGoban();
   try{
        writer = new FileWriter("fichier.txt", false);
        writer.write(texte,0,texte.length());
   }catch(IOException ex){
       ex.printStackTrace();
   }finally{
     if(writer != null){
        writer.close();
     }
   }
}


L'idée c'était d'avoir mes informations sur plusieurs lignes.

Sauf que quand j'ouvre le fichier tout est bien écris, mais sur une seule ligne. :hum: pourtant j'ai bien les \n ... je comprends pas vraiment =)

Pour tester on peut mettre texte="a"+"\n" +"b" a et b seront sur la même ligne.


C'est pas gênant en soit d'avoir une seule ligne, mais je pense que ensuite pour récupérer les informations ça serait plus simple d'avoir les informations séparé sur plusieurs lignes.



En parlant de ça, j'ai pas pu trouver comment lire un fichier correctement..vous avez un tuto quelque part ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 20 Mai 2015, 18:51

FileWriter blankspace

http://stackoverflow.com/questions/8005086/java-filewriter-how-to-write-to-next-line

ps: si c'est pour sérialiser un fichier, t'as ptet un peu mieux... genre tu sérialises en json ou xml c'est un peu moins cryptic qu'un contenu où faut "parser" ton fichier
la vie est une fête :)

danyL
Membre Rationnel
Messages: 682
Enregistré le: 03 Jan 2015, 13:29

par danyL » 20 Mai 2015, 19:05

sous Windows les fins de ligne c'est \r\n et pas \n comme sous unix/linux
si tu regardes ton fichier sous Windows c'est normal que tu ne voies qu'une seule ligne

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 20 Mai 2015, 19:53

danyL a écrit:sous Windows les fins de ligne c'est \r\n et pas \n comme sous unix/linux
si tu regardes ton fichier sous Windows c'est normal que tu ne voies qu'une seule ligne


Du coup si on fait \r\n du coup sur linux ça fait quoi ? =)
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

danyL
Membre Rationnel
Messages: 682
Enregistré le: 03 Jan 2015, 13:29

par danyL » 20 Mai 2015, 20:02

Rockleader a écrit:Du coup si on fait \r\n du coup sur linux ça fait quoi ? =)

un éditeur texte sous linux verra le \n et l'interpretera comme la fin de ligne
pour le \r cela dépend des éditeurs, soit il n'affichera rien soit un caractère bizarroïde

dans le code, si tu mets \r\n à l'écriture il te suffit d'en tenir compte dans la fonction de lecture du fichier

c'est pourquoi dans le lien de fatal_error ils déconseillent d'utiliser directement \n dans le code car le séparateur de fin de ligne est différent suivant les plateformes

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 21 Mai 2015, 12:22

Ok, merci à vous deux ;)

Une dernière question..un peu sans rapport mais bon =)


Admettons que je récupère une ligne

Disons que la ligne récupéré vaut:

"9\r\n"

Si on l'affiche on obtient bien sûr le 9 puis le retour à la ligne du coup.
Mais, si je veux transformer ce String 9 en int ? Je sais qu'il y a une fonction qui fait ça, j'ai plus la fonction en tête mais je la retrouverais.


Non, du coup ma question c'est comment va être interprété le \r\n par la fonction qui transforme le string en int ? Est ce qu'il faut au préalable effectuer un traitement pour simplement récupérer "9" ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 21 Mai 2015, 13:01

y'a plus simple pour écrire dans un fichier :

Code: Tout sélectionner
String text = "1ere ligne\n2eme ligne";
com.google.common.io.Files.write(text, new File("test.txt"), Charsets.UTF_8);

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 21 Mai 2015, 13:40

ben ca dépend du contrat de ta fonction....
:marteau:
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 22 Mai 2015, 03:01

fatal_error a écrit:ben ca dépend du contrat de ta fonction....
:marteau:


Si tu me tapes sur la têtes comme ça tu vas finir par me griller le peu de cervelle qu'il me reste :ptdr:


Plus sérieusement, je ne savais pas ce que c'était que les contrats...j'ai regardé un ptit peu et j'ai vu que la programmation par contrat avait été introduit en java..m'enfin bon ça reste obscur pour moi tout ça :dodo:


Quoi qu'il en soit, ma lecture/écriture fonctionne...encore une fois je suis un peu pressé par le temps donc je cherche pas vraiment à optimiser tout ça, du moment que ça marche c'est déjà bien^^

Par contre, la méthode de Cliffe avec google :mur: Là j'avoue que j'ai pas compris d'où ça sortait...qu'est ce que google vient foutre dans cette histoire ?

Et le Charsets.UTF_8 c'est pas un encodage de page web ça ?
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Cliffe
Membre Rationnel
Messages: 967
Enregistré le: 12 Juin 2012, 13:25

par Cliffe » 22 Mai 2015, 05:10

Rockleader a écrit:Par contre, la méthode de Cliffe avec google :mur: Là j'avoue que j'ai pas compris d'où ça sortait...qu'est ce que google vient foutre dans cette histoire ?

Et le Charsets.UTF_8 c'est pas un encodage de page web ça ?


Y'a rien à comprendre, c'est juste une fonction 'write' qui écrit dans un fichier.
Tape 'java guava' sur google.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 22 Mai 2015, 06:53

je te parle du contrat de la fonction, pas de la programmation par contrat.
je pense que tu c'est ce que c'est que spécifier ce que fait une fonction...
telle fonction fait ca
telle autre fonction fait ca en s'arretant à la première lettre

quant au charset utf8 s'il est utilisé pour les pages web, c'est juste une "map" qui est également utilisée pour ta console..., ton système, etc:
à telle valeur, j'associe tel caractère (et vice versa: tel caractère est encodé par telle valeur)
la vie est une fête :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite