Je souhaite qu'un utilisateur puisse copier et coller du texte multiligne dans la console, puis l'enregistrer dans un fichier texte spécifique ("weather.text" dans ce cas) dans un dossier de données dans le même paquet). J'ai travaillé sur cette tâche simple pendant quelques heures et la solution m'évite. Je suis nouveau à Java alors je m'excuse d'avance.Entrée de l'utilisateur dans un fichier texte en Java
Cette fonction statique est appelée à partir de la classe du lanceur principal.
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.util.Scanner;
public static void writeFile()
{
//set up for the user input
Reader r = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(r);
String str = null;
try {
//prompt the user to input data
System.out.println("Type or paste your data and hit Ctrl + z");
str = br.readLine();
//save the user input data to text file
PrintWriter writer = new PrintWriter("weather.txt", "UTF-8");
writer.print(str);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Actuellement, je rencontre 2 problèmes.
1) Le code ci-dessus semble enregistrer uniquement la première ligne collée dans la console dans la console.
2) Le fichier texte en cours d'enregistrement se trouve dans le dossier de projet global et non dans le sous-dossier de données spécifié.
Toute aide ou suggestion est appréciée. Je vous remercie.
Est-ce que Ctrl + z n'est pas juste "annuler"? Ou est-ce en quelque sorte tout mettre sur une ligne? 'br.readLine()' ne lit qu'une seule ligne. – 4castle
@ 4castle http://superuser.com/questions/476873/what-is-effect-of-ctrl-z-on-a-unix-linux-application – Murillio4
mon professeur a dit d'utiliser ctr + z "pour obtenir le scanner lire les données dans le fichier lors de la création du fichier texte ". Je préfère de loin une interface graphique, mais nous ne sommes pas encore avancés dans notre programme. Pour l'instant, je me bats la tête contre la ligne de commande pour l'exercice. –