Mon code en C # (asp.net MVC)
StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");
// write a line of text to the file
tw.Write("test");
Le fichier est créé mais est vide. Aucune exception n'est levée. Je n'ai jamais vu cela auparavant et je suis coincé ici; J'ai juste besoin d'écrire une sortie de débogage.
S'il vous plaît donnez votre avis.
Utilisation
System.IO.File.WriteAllText(@"path\te.txt", "text");
StreamWriter est mis en mémoire tampon par défaut, ce qui signifie qu'il ne sortira pas tant qu'il ne recevra pas un appel Flush () ou Close ().
Vous pouvez changer cela en définissant la propriété AutoFlush , si vous le souhaitez. Sinon, faites simplement:
StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt");
// write a line of text to the file
tw.Write("test");
tw.Close(); //or tw.Flush();
Ni rincé, ni fermé, ni éliminé. essaye ça
using (StreamWriter tw = new StreamWriter(@"C:\mycode\myapp\logs\log.txt"))
{
// write a line of text to the file
tw.Write("test");
tw.Flush();
}
ou ma préférence
using (FileStream fs = new FileStream( @"C:\mycode\myapp\logs\log.txt"
, FileMode.OpenOrCreate
, FileAccess.ReadWrite) )
{
StreamWriter tw = new StreamWriter(fs);
tw.Write("test");
tw.Flush();
}
Vous devez fermer ou vider le StreamWriter après avoir terminé l'écriture.
tw.Close();
ou
tw.Flush();
Mais la meilleure pratique consiste à encapsuler le code de sortie dans une instruction using, car StreamWriter implémente IDisposable:
using (StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt")){
// write a line of text to the file
tw.Write("test");
}
FileStream fs = new FileStream("d:\\demo.txt", FileMode.CreateNew,
FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.ASCII);
int data;
sw.Write("HelloWorld");
sw.Close();
fs.Close();
Ya dans VB.net ce n'était pas nécessaire mais il semble qu'avec CSharp vous avez besoin d'un appel Writer.Flush pour forcer l'écriture. Bien sûr, Writer.Close () forcerait également le rinçage.
Nous pouvons également définir la propriété AutoFlush de l'instance StreamWriter:
sw.AutoFlush = true;
// Gets or sets a value indicating whether the StreamWriter
// will flush its buffer to the underlying stream after every
// call to StreamWriter.Write.
De: http://msdn.Microsoft.com/en-us/library/system.io.streamwriter.autoflush (v = vs.110) .aspx
une alternative
FileStream mystream = new FileStream("C:\\mycode\\myapp\\logs\\log.txt",
FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter tw = new StreamWriter(mystream);
tw.WriteLine("test");
tw.close();
Essayez de fermer le fichier ou ajoutez \n
à la ligne telle que
tw.WriteLine("test");
tw.Close();