La lecture et l'Écriture à un .txt fichier en Java
Voici mon invite pour la mission:
Votre programme doit lire les informations à partir d'un fichier texte au lieu d'utiliser un scanner pour lire à partir de la ligne de commande.
Votre programme doit aussi écrire les messages dans un fichier texte au lieu d'afficher les messages sur l'écran.
J'ai le code écrit et en cours d'exécution pour demander l'aide de l'interface CLI. Cependant, je n'ai absolument aucune idée de comment changer le code en utilisant un fichier texte. Quelqu'un peut-il expliquer cela à moi?
Code de la mesure:
import java.util.*;
public class parallelArrays {
public static void main(String[] args) {
String[] names;
int[] exam1Grades;
int[] exam2Grades;
int n, sum1, sum2;
double avg1,avg2;
Scanner kb = new Scanner(System.in);
//Get the number of students from the user
System.out.print("Enter # of students:");
n = kb.nextInt();
//Allocate the arrays
names = new String[n];
exam1Grades = new int[n];
exam2Grades = new int[n];
//Input the names and grades
for (int i=0; i<=names.length-1; i++) {
System.out.print("Enter name for student #" + (i+1) + ":");
names[i] = kb.next();
System.out.print("Enter exam #1 grade:");
exam1Grades[i] = kb.nextInt();
System.out.print("Enter exam #2 grade:");
exam2Grades[i] = kb.nextInt();
}
//Add up all the grades (could have been done in the above loop)
sum1 = 0;
sum2 = 0;
for (int i=0; i<=names.length-1; i++) {
sum1 = sum1 + exam1Grades[i];
sum2 = sum2 + exam2Grades[i];
}
//Calculate and output the averages
avg1 = sum1/n;
System.out.println();
System.out.println("Exam #1 average: " + avg1);
avg2 = sum2/n;
System.out.println("Exam #2 average: " + avg2);
System.out.println();
//Compare each grade to the average
for (int i=0; i<=names.length-1; i++) {
if (exam1Grades[i] > avg1)
System.out.println("Student " + names[i] + " is above average on exam 1");
else if (exam1Grades[i] < avg1)
System.out.println("Student " + names[i] + " is below average on exam 1");
else
System.out.println("Student " + names[i] + " is average on exam 1");
if (exam2Grades[i] > avg2)
System.out.println("Student " + names[i] + " is above average on exam 2");
else if (exam2Grades[i] < avg2)
System.out.println("Student " + names[i] + " is below average on exam 2");
else
System.out.println("Student " + names[i] + " is average on exam 2");
}
}
}
- Pour modifier, en général, vous voulez charger le fichier dans une variable, modifier des trucs, et puis l'enregistrer.
- Si l'une des réponses ci-dessous les réponses à votre question, nous vous prions d'accepter la réponse en cliquant sur la coche. stackoverflow.com/about
Vous devez vous connecter pour publier un commentaire.
comme @Shobit dit précédemment, l'utilisation d'un BufferedWriter en conjonction avec un FileWriter et avec les méthodes write() et newLine (), vous pouvez insérer les lignes que vous voulez le fichier au lieu de l'aide Println.
et lorsque vous avez terminé l'écriture du fichier,
Vous pouvez utiliser le Scanner de classe de la même façon que vous utilisez pour lire les noms de fichier. Tout ce que vous avez à faire est de définir comment vous allez organiser votre fichier. Par exemple, séparer vos infos avec un caractère spécial, j'.e: "," et de l'utiliser comme un jeton pour identifier les différents champs de votre fichier pour le nom, la qualité, etc. (voir la Modèle et Scanner Api pour utiliser les REGEX pour cela)
Vous pouvez créer une Élève de la classe et de cartographier les champs nécessaires à cette catégorie, ajouter à une Liste et itérer sur que beaucoup plus facile.
Comme pour l'écriture dans un fichier texte, vous le faites déjà, vérifiez FileWriter pour voir comment faire pour ajouter une nouvelle ligne, et qui le sera. Bonne Chance!
Vous pouvez utiliser BufferedReader et BufferedWriter pour lire/écrire dans un fichier en Java. Le BufferedReader constructeur prend un objet FileReader, dont le constructeur prend un Fichier objet. Il ressemble à quelque chose comme ceci:
Vous pouvez ensuite lire ligne par ligne du fichier en utilisant le BufferedReader de
readLine()
(ou l'une des autres méthodes en fonction de votre cas d'utilisation).Analogiquement, il y a aussi BufferedWriter et un FileWriter et un
write()
méthode pour l'écriture.La fermeture du lecteur et l'écrivain flux après la lecture/écriture est toujours une bonne habitude. Vous pouvez utiliser le
close
méthode sur les cours d'eau à faire de même.Espère que ça aide.