我从内存中的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)
您可以使用Split
方法按换行符拆分字符串:
string[] result = Encoding.
ASCII.
GetString(memoryStream.ToArray()).
Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)