web-dev-qa-db-fra.com

streamWriter réécrire le fichier ou l'ajouter au fichier

J'utilise ceci

for($number=0; $number < 5; $number++){
StreamWriter x = new StreamWriter("C:\\test.txt");
                x.WriteLine(number);
                x.Close();

}

si quelque chose est dans test.text, ce code ne le remplacera pas. J'ai 2 questions

1: how can I make it overwrite the file
2: how can I append to the same file

en utilisant C #

14
Asim Zaidi

Essayez l'énumérateur FileMode:

        FileStream fappend = File.Open("C:\\test.txt", FileMode.Append); // will append to end of file

        FileStream fcreate = File.Open("C:\\test.txt", FileMode.Create); // will create the file or overwrite it if it already exists
16
Sean Thoman

Le comportement par défaut de StreamWriters consiste à créer un nouveau fichier ou à le remplacer s'il existe. Pour ajouter au fichier, vous devrez utiliser la surcharge qui accepte un booléen et la définir sur true. Dans votre exemple de code, vous allez réécrire test.txt 5 fois.

using(var sw = new StreamWriter(@"c:\test.txt", true))
{
    for(int x = 0; x < 5; x++)
    {
        sw.WriteLine(x);    
    }
}
17
Sean Hayden

Vous pouvez passer un deuxième paramètre à StreamWriter à enable ou disable en ajoutant au fichier:

dans C#.Net:

using System.IO;

// This will enable appending to file.
StreamWriter stream = new StreamWriter("YourFilePath", true);

// This is default mode, not append to file and create a new file.
StreamWriter stream = new StreamWriter("YourFilePath", false);
// or
StreamWriter stream = new StreamWriter("YourFilePath");

dans C++.Net(C++/CLI):

using namespace System::IO;

// This will enable appending to file.
StreamWriter^ stream = gcnew StreamWriter("YourFilePath", true);

// This is default mode, not append to file and create a new file.
StreamWriter^ stream = gcnew StreamWriter("YourFilePath", false);
// or
StreamWriter^ stream = gcnew StreamWriter("YourFilePath");
8
Reza Ebrahimi

Vous pouvez commencer par utiliser FileStream, puis le transmettre à votre StreamWriter.

FileStream fsOverwrite = new FileStream("C:\\test.txt", FileMode.Create);
StreamWriter swOverwrite = new StreamWriter(fsOverwrite);

ou

FileStream fsAppend = new FileStream("C:\\test.txt", FileMode.Append);    
StreamWriter swAppend = new StreamWriter(fsAppend);
4
bencobb

Alors, quel est le résultat de votre code?

Je m'attendrais à ce que le fichier ne contienne que le chiffre 4, car le comportement par défaut est de créer/écraser, mais vous dites qu'il ne s'agit pas d'écraser?

Vous devriez pouvoir le faire écraser le fichier en faisant ce que vous faites, et vous pouvez l'ajouter en créant un FileStream avec FileMode.Append.

1
Michael Holman