2017-05-13 2 views
0

Ich mache einen Diskordierungs-Bot in einer .net-Konsolen-App, und ich hatte große Zeit mit Stream-Writer gekämpft, also versuche ich Datei-Stream, ich habe nicht die gleichen Fehler, die ich mit Stream-Writer hatte, aber ich habe das Problem aus einer neuen Zeile hinzugefügt,Hinzufügen von Environment.NewLine in filestream

string path = @"C:\PathWouldBeHere\Log.txt"; // path to file 

using (FileStream fs = File.Create(path)) 
{ 
    string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}"; //your data 
    byte[] info = new UTF8Encoding(true).GetBytes(dataasstring); 
    fs.Write(info, 0, info.Length); 
} 

Jetzt weiß ich, ich Environment.NewLine verwenden kann, aber ich bin eine komplette Noob und habe keine Ahnung, wo im Code ich sagen soll. Ich weiß, dass es ein wenig fragt, aber wenn jemand meinen Code so optimieren könnte, dass er statt dessen eine Sache protokolliert (das vorherige Protokoll löscht), fügt er stattdessen eine neue Zeile hinzu.

+0

Bitte versuchen Sie 'String dataasstring = $ "...." + Environment.NewLine; ' –

+0

string dataasstring = $" .... "+ Environment.NewLine; Das klappt nicht, leider löschte noch die andere Zeile. – michaelukz

+0

Was meinst du mit "löschte die andere Zeile"? Welche andere Linie? –

Antwort

1

Sie verwenden File.Create, die eine neue Datei am Speicherort erstellt und löscht alle Dateien, die bereits dort vorhanden sind. Was Sie wollen, anstatt den FileStream Konstruktor mit dem FileMode.Append Flagge zu verwenden ist:

using (FileStream fs = new FileStream(path, FileMode.Append)) 
{ 
    string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}{Environment.NewLine}"; //your data 
    byte[] info = new UTF8Encoding(true).GetBytes(dataasstring); 
    fs.Write(info, 0, info.Length); 
} 

Alternativ können Sie den Stream-Ansatz ganz überspringen und benutzen Sie einfach die folgenden Schritte aus:

string dataasstring = $"[{DateTime.Now.Hour}:{DateTime.Now.Minute}][Log]{Context.User.Username}: {Context.Message.Content}{Environment.NewLine}"; 
File.AppendAllText(path, dataasstring); 
+0

Danke! Ich habe die erste Methode verwendet, ich musste eine winzige Verstimmung ändern, die du gemacht hast, aber es war ein einfacher Fehler (du hast den Dateistream-Stream genannt, aber fs benutzt immer noch xD) Danke, srsly! – michaelukz

+0

Haben Sie eine Idee, warum das nicht funktioniert? https://hastebin.com/odibuvaran.cs – michaelukz

+0

@michaelukz Definieren "funktioniert nicht". – Abion47

Verwandte Themen