MemoryStream到string []

Str*_*ord 5 c#

我从内存中的zip文件(要求不写入磁盘)中读取CSV文件的内容到MemoryStream中.并使用以下代码来获取人类可读的字符串

 string  result = Encoding.ASCII.GetString(memoryStream.ToArray());
Run Code Online (Sandbox Code Playgroud)

但是,我们希望结果是一个字符串[]来映射CSV文件中的每一行.

有没有办法自动处理?

谢谢

Jon*_*eet 18

首先,不需要调用ToArray内存流.只需使用一个StreamReader,并ReadLine()反复调用:

memoryStream.Position = 0; // Rewind!
List<string> rows = new List<string>();
// Are you *sure* you want ASCII?
using (var reader = new StreamReader(memoryStream, Encoding.ASCII))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        rows.Add(line);
    }
}
Run Code Online (Sandbox Code Playgroud)


Zbi*_*iew 9

您可以使用Split方法按换行符拆分字符串:

string[] result = Encoding.
                  ASCII.
                  GetString(memoryStream.ToArray()).
                  Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)