L'écriture d'un tableau dans un fichier en Java
Salut, j'ai regardé toutes les autres questions semblables à ce que j'ai pu trouver et je n'ai pas été capable de réparer mon dernier problème, même si les réponses à d'autres questions qui m'loin.
Je suis en train d'écrire un tableau dans un fichier, et jusqu'à présent, je peux le faire, mais l'auteur écrit seulement tout sur la même ligne. Pour une raison quelconque, il n'accepte pas ma nouvelle commande de ligne (\n) lors de l'affichage dans le bloc-notes.
Un exemple pour essayer de l'expliquer:
Contenu du tableau: test, test2, test3, test4
Écrire ce fichier
Le contenu du fichier: test test2 test3 test4
Alors que je veux que le fichier soit:
test
test2
test3
test4
Ci-dessous est la partie de mon code à écrire dans le fichier.
public void save(String fileName) throws FileNotFoundException {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for ( int i = 0; i < nbrMovies; i++)
{
writer.write(movies[i].getName() + " \n");
}
writer.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
Le fichier n'accepte pas les "\n" commande et à la place met juste une petite boîte à côté du dernier film ajouté.
Toute aide serait grandement appréciée.
- Tous les fichiers texte doit être en mesure d'accepter "\n" caractère. Quel éditeur de texte pour ouvrir le fichier texte que vous venez d'écrire? L'éditeur de texte ne peuvent pas en charge la lecture de style unix fichier texte et afficher \n sous la forme d'une petite boîte. Essayez d'utiliser "\r\n" " si vous voulez avoir du style Windows fichier texte. Les fins de ligne sont différents sur ces deux OS.
- Mieux encore, l'utilisation de l'écrivain.newLine() et il va insérer la ligne appropriée de la fin de la plate-forme.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous ne devriez pas
close()
le cours d'eau après chaque écriture; déplacer leclose()
à l'extérieur de la boucle, de préférence dans unefinally
bloc pour s'assurer qu'il est appelé. Deuxièmement, plutôt que d'écrire "\n", une meilleure approche estPrendre
writer.close();
de la boucle for. Votre code devrait ressembler à ceci:-writer
n'est pas visible à l'intérieur de lafinally
bloc.writer
à l'extérieur de la try catch est un très une tâche triviale.Il y a cette
writer.newLine();
et déplacer l'appel de fermer la boucle.Envelopper le FileWriter ou BufferedWriter avec un PrintWriter, et vous aurez accès à la println(...) de la méthode.
Déplacer le
writer.close()
en dehors de la boucle. Aussi, assurez-vous que vous tirez la chasse d'écrivain avant de le fermer.Pourquoi n'appelez-vous pas
close
en dehors de la boucle?Je suis d'accord avec déplacement de l'écrivain.close() en dehors de la boucle. Mais il y a une façon plus simple de faire ce que vous voulez plutôt que d'appeler la fonction de saut de ligne, simplement ajouter un retour chariot au lieu de retourner à la fin de l'instruction
c'est à dire
modifier l'instruction:
writer.write(movies[i].getName() + " \n");
pour:
writer.write(movies[i].getName() + " \r\n");
\r
et la\n
de reconnaître un saut de ligne. Donc ce n'est pas un problème avec l'écriture du fichier - c'est plutôt un problème d'ouverture de linux-style fichier dans le bloc-notes.