Как создать файл .csv неявно/автоматически с помощью правильного метода, добавить текст в этот файл, существующий в памяти, а затем преобразовать в память данные в массив байтов?Создание и запись в текстовый файл inmemory и преобразование в массив байтов за один раз
string path = @"C:\test.txt";
File.WriteAllLines(path, GetLines());
byte[] bytes = System.IO.File.ReadAllBytes(path);
При таком подходе я создаю файл всегда (хороший), писать в него (хорошо), а затем закройте его (плохо), а затем открыть файл снова с пути и читать его с жесткого диска (плохо)
Как я могу улучшить это?
UPDATE
Один почти хороший подход был бы:
using (var fs = new FileStream(@"C:\test.csv", FileMode.Create, FileAccess.ReadWrite))
{
using (var memoryStream = new MemoryStream())
{
fs.CopyTo(memoryStream);
return memoryStream .ToArray();
}
}
, но я не в состоянии написать текст в этом FileStream ... только байты ...
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();
}
}
}
Строковое сообщение не сохраняется в файле test.csv. Кто-нибудь знает почему?
как вы проходите TextWriter в FileStream? Создавая FileStream, вы не можете передать это. – HelloWorld
TextWriter принимает поток в качестве входных данных, поэтому вы можете напрямую использовать FileStream. – Xilmiki
Я думаю, вы неправильно поняли мой оригинальный вопрос. Я не просто хочу создать текстовый файл ... пожалуйста, рассмотрите также байт [] с «текстовыми» данными, которые я хочу. – HelloWorld