0
votes

Comment écrire du texte dans la console après l'annexe?

Après avoir ajouté un fichier texte, je souhaite que la console écrit le nouveau texte complet du fichier TXT. Cependant, la ligne que j'ai juste ajoutée n'est pas écrite dans la console. Qu'est-ce que je fais mal?

Vous pouvez voir mon code ci-dessous. xxx

à la fin, je m'attends à lire le texte déjà présent dans le fichier et la ligne " Cette ligne est ajoutée par Visual Studio ». Mais tout ce que je reçois, c'est l'ancien texte.


3 commentaires

Vous appendez le texte dans le fichier mais imprimez les lignes de variables. Vous devez relire les lignes ou vous devez ajouter d'abord


Vous lisez le fichier de contenu dans une variable (en mémoire), puis plus tard vous modifiez le fichier. Mais le contenu de la variable est toujours le contenu que vous avez lu depuis le fichier avant la modifier. Pensez-y de cette façon: vous faites une copie photo d'une page. Ensuite, vous modifiez la page. La copie de photos existante sera-t-elle également modifiée? Non bien sûr que non. Vous devriez faire une nouvelle copie de photos, en d'autres termes: lisez à nouveau le fichier (dans la variable).


Si vous vous demandez - je n'ai pas modifié le code dans la question parce que cela n'appartenait pas là. Plutôt parce que ce n'était pas directement lié à la question. Cela facilite la compréhension.


3 Réponses :


2
votes

Vous devez définir la variable code> à nouveau code> à nouveau après l'ajout de votre texte, comme vous l'avez fait à l'origine.

using System;
using System.IO;

namespace FileExercise
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Text.txt";    

            //Read all lines
            string lines = File.ReadAllText(path);

            Console.WriteLine(lines);

            //Add line to original document
            File.AppendAllLines(@path, new string[] { "" + "This line is added 
            by Visual Studio" });    

            lines = File.ReadAllText(path);

            //Read new lines
            Console.WriteLine(lines);

            Console.ReadKey();
        }
    }
}


4 commentaires

@elgonzo - le Dormez était dans l'OP. Je l'ai édité, il y a une seconde, j'ai édité de cette réponse. Cette réponse le contenait du code de l'OP.


Non, j'apprends toujours et ajoutant que le sommeil me permet d'observer tout ce qui se passe. Je viens de les mettre à des fins éducatives: p


@elgonzo j'ai littéralement copié l'exemple de OP. Ce qui a pour but de dormir d'Isabelle, cela n'a pas d'importance pour moi. J'ai répondu à sa question. La baisse ne devrait pas arriver pour cette raison. J'ai répondu à la question.


J'ai déjà supprimé mon commentaire après avoir remarqué Scott édition de la réponse à la faire correspondre à la question modifiée ;-) Alors, tout va bien ...



0
votes

AFTHER Ajoutez le texte dans le fichier dont vous avez besoin pour lire à nouveau le fichier. La variable "lignes" maintient toujours le texte à partir de la dernière fois qu'il lit le fichier.

string lines;
lines = File.ReadAllText(path);
Console.WriteLine(lines);

//Add line to original document
File.AppendAllLines(@path, new string[] { "" + "This line is added 
by Visual Studio" });

//Read new lines
lines = File.ReadAllText(path);

Console.WriteLine(lines);


0 commentaires

1
votes

Lorsque vous êtes ajouté au fichier avec fichier.appendalllines Le fichier est mis à jour avec le texte supplémentaire, mais les valeurs dans lignes ne changent pas, il a toujours le texte qui était dans le fichier avant d'ajouter.

Il y a quelques façons de faire ce que vous voulez, voici un exemple: xxx

si vous prévoyez d'ajouter beaucoup Lignes Vous voudrez peut-être examiner la diffusion du fichier et des lignes ajoutées de cette façon ou même d'utiliser le stringbuilder .

EDIT

J'aurais dû mentionner pourquoi je n'appelle pas seulement fichier.readallText à nouveau. Cette stratégie fonctionnerait mais elle est très inefficace car elle exigerait que tout le contenu du fichier soit lu à nouveau. En fonction de la taille du fichier, cela pourrait prendre beaucoup de temps. Il est plus propre et plus efficace de modifier les données dans la mémoire comme dans l'exemple ci-dessus.


0 commentaires