从保存到SQL Server中的字节字段的文本文件中读取内容

时间:2015-03-19 12:21:46

标签: c# sql-server

我在两者之间遗漏了一些东西。我将CSV文件内容存储在数据库中,而不是存储在文件中。下面的第二行是错误的,我想读取字节数据并将其分配给行数组。所以我可以循环结果,就像我直接从磁盘上的文件中读取一样。非常感谢......

FileContentResult x23File = File(x23.FileData, 
                                "application/text", x23.Filename);

string[] Lines = System.Text.Encoding.UTF8.GetString(x23File);

2 个答案:

答案 0 :(得分:3)

如果我们假设x23.FileDatabyte[],您可能需要:

List<string> lines = new List<string>();
using(var ms = new MemoryStream(x23.FileData))
using(var reader = new StreamReader(ms, Encoding.UTF8))
{
    string line;
    while((line = reader.ReadLine()) != null)
        lines.Add(line);
}

现在lines包含所有单独的行。请注意,您也可以通过IEnumerable<string>以非缓冲方式使用此数据。例如:

static IEnumerable<string> ReadLines(byte[] source, Encoding enc = null)
{
    using(var ms = new MemoryStream(source))
    using(var reader = new StreamReader(ms, enc ?? Encoding.UTF8))
    {
        string line;
        while((line = reader.ReadLine()) != null)
            yield return line;
    }
}

答案 1 :(得分:0)

您收到该错误是因为x23File不是byte[]。你的第二行应该是

string[] Lines = System.Text.Encoding.UTF8.GetString(x23File.FileContents).Split(new String[]{"\r\n"}, StringSplitOptions.None);