Come posso creare un file .csv in modo implicito/automatico utilizzando il metodo corretto, aggiungere del testo a quel file esistente in memoria e quindi convertirlo in memoria dati in un array di byte?Creare e scrivere su un file di testo in memoria e convertirlo in array di byte in una volta
string path = @"C:\test.txt";
File.WriteAllLines(path, GetLines());
byte[] bytes = System.IO.File.ReadAllBytes(path);
Con tale approccio crea un file di sempre (bene), scrivere in esso (buono) quindi chiuderlo (cattivo) quindi aprire il file di nuovo da un percorso e leggerlo dal disco rigido (cattivo)
Come posso migliorarlo?
UPDATE
uno quasi buon approccio sarebbe:
using (var fs = new FileStream(@"C:\test.csv", FileMode.Create, FileAccess.ReadWrite))
{
using (var memoryStream = new MemoryStream())
{
fs.CopyTo(memoryStream);
return memoryStream .ToArray();
}
}
ma io non sono in grado di scrivere il testo in quella filestream ... solo byte ...
UPDATE 2
using (var fs = File.Create(@"C:\temp\test.csv"))
{
using (var sw = new StreamWriter(fs, Encoding.Default))
{
using (var ms = new MemoryStream())
{
String message = "Message is the correct ääüö Pi(\u03a0), and Sigma (\u03a3).";
sw.Write(message);
sw.Flush();
fs.CopyTo(ms);
return ms.ToArray();
}
}
}
Il messaggio di stringa non viene mantenuto nel file test.csv. Qualcuno sa perché?
come si fa a passare il TextWriter nel FileStream? Creare un FileStream non puoi passarlo. – HelloWorld
TextWriter accetta uno stream come input in modo da poter utilizzare direttamente FileStream. – Xilmiki
Penso che tu abbia frainteso la mia domanda iniziale. Non voglio solo creare un file di testo ... per favore considera anche il byte [] con i dati di "testo" che voglio. – HelloWorld