web-dev-qa-db-fra.com

Supprimer tout le texte précédent avant d'écrire

J'écris un fichier texte et chaque fois que j'écris, je veux effacer le fichier texte. 

try
{
    string fileName = "Profile//" + comboboxSelectProfile.SelectedItem.ToString() + ".txt";
    using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), true))
    {
        sw.WriteLine(fileName);
        MessageBox.Show("Default is set!");
    }
    DefaultFileName = "Default//DefaultProfile.txt";
}
catch 
{ 
}

Comment puis-je faire cela? Je veux supprimer tout le contenu précédent de DefaultProfile.txt

En fait, je dois connaître la méthode ou le moyen (un simple nom pourrait être) pour supprimer tout le contenu du fichier texte.

9
Abdur Rahim

Vous pouvez simplement écrire une chaîne vide dans le fichier existant:

File.WriteAllText(@"Default\DefaultProfile.txt", string.Empty);

Ou remplacez le deuxième paramètre du constructeur StreamWriter par false par replace le contenu du fichier au lieu de addending au fichier.

16
Cᴏʀʏ

Vous pouvez regarder la méthode Truncate

FileInfo fi = new FileInfo(@"Default\DefaultProfile.txt");
using(TextWriter txtWriter = new StreamWriter(fi.Open(FileMode.Truncate)))
{
    txtWriter.Write("Write your line or content here");
}
12
MethodMan

La technique la plus simple et la plus efficace consiste à utiliser le paramètre booléen du constructeur StreamWriter. Lorsqu'il est défini sur false, le fichier est écrasé avec l'opération en cours. Par exemple, je devais enregistrer la sortie d’une opération mathématique dans un fichier texte. Chaque fois, je voulais SEULEMENT la réponse actuelle dans le fichier texte. Ainsi, lors de la première opération StreamWriter, j'ai défini la valeur booléenne sur false et les appels suivants ont eu la valeur bool val définie sur true. Le résultat est que pour chaque nouvelle opération, la réponse précédente est écrasée et seule la nouvelle réponse est affichée.

        int div = num1 / denominator;
        int mod = num1 % denominator;
        Console.Write(div);
        using (StreamWriter writer = new StreamWriter(FILE_NAME, false ))
        {
            writer.Write(div);
        }
        Console.Write(".");
        using (StreamWriter writer = new StreamWriter(FILE_NAME, true))
        {
            writer.Write(".");
        }       
6
BrianK

Vous pouvez utiliser FileMode.Truncate. Le code ressemblera à

FileStream fs = new 
FileStream(filePath, FileMode.Truncate, FileAccess.Write )
{  
  fs.Close();
}
1
Amit Jaura

System.IO.File.Delete ou l'une des surcharges du constructeur System.IO.FileStream en spécifiant FileMode.Create

1
Sam Axe

Modifiez simplement le second paramètre de true à false dans le constructeur de StreamWriter.

using (StreamWriter sw = new StreamWriter(("Default//DefaultProfile.txt").ToString(), **false**))

Voir Contrôleur StreamWriter

0
MicheevSemen