Je veux créer un fichier texte puis y ajouter le texte d'un TextBox
. La création du fichier texte fonctionne sans problème avec le code suivant:
InitializeComponent();
string path = @"C:\Users\Morris\Desktop\test.txt";
if (!File.Exists(path))
{
File.Create(path);
}
Mais j'obtiens une erreur indiquant que le fichier est utilisé lorsque j'essaie d'ajouter le texte au fichier texte. Si le fichier existe déjà avant d'exécuter le code, je ne reçois pas cette erreur et le TextBox.Text
est ajouté au fichier. J'utilise ce code pour ajouter le texte au fichier texte:
public void writeTxt()
{
string path = @"C:\Users\Morris\Desktop\test.txt";
if (File.Exists(path))
{
using (var tw = new StreamWriter(path, true))
{
tw.WriteLine(TextBox1.Text);
tw.Close();
}
}
}
Pouvez-vous m'aider?
Si le fichier existe, il peut être remplacé ou ajouté à. Si le fichier n'existe pas, ce constructeur crée un nouveau fichier. Vous n'avez donc pas besoin de vérifier si le fichier existe ou non.
Vous devez vous assurer que le fichier est fermé avant de le modifier.
Comme vous pouvez le voir ici, StreamWriter
créera en fait un fichier sur le chemin spécifié lorsqu'il n'existe pas, il est donc inutile de le vérifier.
Je suggère de supprimer la partie qui crée le fichier et de simplement commencer à écrire:
public void writeTxt()
{
string path = @"C:\Users\Morris\Desktop\test.txt";
using (var tw = new StreamWriter(path, true))
{
tw.WriteLine(TextBox1.Text);
tw.Close();
}
}
Mais si vous voulez vraiment créer le fichier au préalable, pensez à Dispose
FileStream
objet créé par File.Create
appel. Dispose
appel appellera automatiquement Flush
et Close
pour vous donc c'est assez sûr et vous pouvez le faire de plusieurs façons comme ceci:
InitializeComponent();
string path = @"C:\Users\Morris\Desktop\test.txt";
if (!File.Exists(path))
{
using ( File.Create(path) ) ; // This will generate warnings that you're not using the object and so on, but that's okay,
}
Ou comme ça:
InitializeComponent();
string path = @"C:\Users\Morris\Desktop\test.txt";
if (!File.Exists(path))
{
FileStream fs = File.Create(path);
fs.Dispose();
}