Làm cách nào để tạo tệp .csv ngầm/tự động bằng cách sử dụng đúng phương pháp, thêm văn bản vào tệp đó trong bộ nhớ và sau đó chuyển sang bộ nhớ dữ liệu vào một mảng byte?Tạo và ghi vào tệp văn bản inmemory và chuyển đổi thành mảng byte trong một lần
string path = @"C:\test.txt";
File.WriteAllLines(path, GetLines());
byte[] bytes = System.IO.File.ReadAllBytes(path);
Với cách tiếp cận mà tôi tạo ra một tập tin luôn (tốt), viết vào nó (tốt) sau đó đóng nó (xấu) sau đó mở lại tập tin từ một đường dẫn và đọc nó từ đĩa cứng (xấu)
Làm cách nào để cải thiện điều đó?
CẬP NHẬT
Một cách tiếp cận gần tốt sẽ là:
using (var fs = new FileStream(@"C:\test.csv", FileMode.Create, FileAccess.ReadWrite))
{
using (var memoryStream = new MemoryStream())
{
fs.CopyTo(memoryStream);
return memoryStream .ToArray();
}
}
nhưng tôi không thể viết văn bản vào FileStream rằng ... chỉ 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();
}
}
}
Thông báo chuỗi không được lưu vào tệp test.csv. Có ai biết tại sao không?
làm thế nào để bạn vượt qua TextWriter cho FileStream? Tạo một FileStream bạn không thể vượt qua điều đó. – HelloWorld
TextWriter chấp nhận luồng là đầu vào để bạn có thể sử dụng trực tiếp FileStream trên đó. – Xilmiki
Tôi nghĩ rằng bạn hiểu sai câu hỏi ban đầu của mình. Tôi không chỉ muốn tạo ra một tập tin văn bản ... xin vui lòng xem xét cũng byte [] với dữ liệu "văn bản" tôi muốn. – HelloWorld