Comment écrire un int dans un fichier txt ?

Résolu/Fermé
Plasma_fr - 22 oct. 2022 à 17:40
 Plasma_fr - 23 oct. 2022 à 16:48

Bonjour,

La question ne correspond pas exactement à ce que je veut faire donc je reprécise : 

Comment écrire un int (avec "

int AleatoryNumber = 1 + (int)(Math.random() * (10));

") dans un fichier txt ? 

Je voudrai aussi tout simplement simplifier mon code car si vous ne l'aviez pas déjà compris je suis débutant. 

Voici mon code : 

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteNewFile {
	public static void main(String args[])   
	{
		try {
			File f = new File("Chemin d'accès + nom du fichier");
            if (f.createNewFile())
                System.out.println("File created");
            else
                System.out.println("File already exists");
		}
		catch (Exception e) {
			System.err.println(e);
		}
		
		
		
		
		int AleatoryNumber = 1 + (int)(Math.random() * (10));
		System.out.println("Le nombre écrit dans le fichier est " + AleatoryNumber); 
		
		try {

			   String content = "Ceci est le contenu ajouté au fichier";

			   File file = new File("Chemin d'accès + nom du fichier");

			   if (!file.exists()) {
			    file.createNewFile();
			   }

			   FileWriter fw = new FileWriter(file.getAbsoluteFile());
			   BufferedWriter bw = new BufferedWriter(fw);
			   bw.write(content);
			   bw.close();

			   System.out.println("Modification terminée!");

			  } catch (IOException e) {
			   e.printStackTrace();
			  }
		
	}
}

Voila, 

Merci d'avance !

A voir également:

2 réponses

KX Messages postés 16727 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 2 décembre 2023 3 012
22 oct. 2022 à 18:51

Bonjour,

On peut faire beaucoup plus simple grâce aux méthodes de la classe Files :

https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/nio/file/Files.html

import java.nio.file.*;

public class WriteNewFile {
    public static void main(String args[]) throws Exception {
        var randomNumber = 1 + (int) (Math.random() * (10));
        System.out.println("Nombre à écrire : " + randomNumber);

        var filePath = Paths.get("monFichier.txt").toAbsolutePath();
        System.out.println("Chemin du fichier : " + filePath);

        var writeContent = String.valueOf(randomNumber);
        Files.writeString(filePath, writeContent);
        System.out.println("Nombre écrit avec succès dans le fichier !");
    }
}

1

Merci ! 

je pense que je vais utiliser cette solution je regarde si ça marche. 

0

Alors, 

J'ai un petit problème, je pense que le chemin d'accès n'est pas bien rédigé malgré les 3 syntaxe différentes que j'ai essayé. En effet, si je laisse le programme tel quel (sans modifié le texte à la place du chemin d'accès) il marche mais me crée mon fichier dans le dossier Document\Eclipse\App\. Mais si je change le chemin d'accès de façon à le crée dans un dossier dans mon bureau, il écrit un caractère non chargé (qui ressemble à ça : (le caractère ne s'affiche pas sur le site)) ou alors cela me crée le fichier comme dans l'exemple 1. 

Voila donc le 1er programme dons j'ai parlé (et qui marche mais pas dans le bon dossier) : 

et pour le deuxième (qui ne marche pas mais dans le bon dossier) au moment de prendre des capture il refaisait comme dans le programme 1 (mauvais dossier mais bon chiffre. 

Merci pour votre futur aide, 

A bientôt.

0
KX Messages postés 16727 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 2 décembre 2023 3 012 > Plasma_fr
23 oct. 2022 à 11:57

Au lieu de mettre Paths.get("monFichier.txt") tu peux écrire Paths.get("C:/monDossier/monFichier.txt") avec ce que tu veux comme nom de dossier ou de fichier.

0
Plasma_fr > KX Messages postés 16727 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 2 décembre 2023
Modifié le 23 oct. 2022 à 17:41

Merci, ça marche !

0
Jean20B Messages postés 1735 Date d'inscription dimanche 6 avril 2014 Statut Membre Dernière intervention 4 décembre 2023 2 237
Modifié le 22 oct. 2022 à 19:29

Bonjour, je propose une solution en reprenant votre code. C'est la méthode bw.write(String) qui écrit une chaîne de caractères (String) dans le fichier (ici c'est la String content).

Il existe une méthode write(int) mais ce n'est probablement pas ce que vous cherchez (l'int en paramètre est un code converti en un unique caractère).

Pour écrire votre int dans le fichier, il faut le convertir en String et utiliser bw.write(String).

Par exemple, en convertissant avec la méthode Integer.toString(int) :

String number = Integer.toString(AleatoryNumber); //AleatoryNumber est un int
bw.write(number); //number est une String

(C'était juste pour l'explication, pour simplifier le code vous pouvez voir l'autre réponse)

0