首页 > 解决方案 > 如何从 StreamReader 读取长度为 n 的字符串?

问题描述

我有一个StreamReader并且我想读取下一个n字节并将它们作为字符串返回。

只有一个ReadLine()方法返回一个字符串,但我的文件没有换行符(CR/LF)。而是Read()返回并填充一个.intReadBlock()char[]

有没有简单的方法来做到这一点?我要使用Encoding.GetString()吗?然后我需要读入一个byte[].

我看到编码和字符超过 1 个字节的问题,所以确切地说,我想读取n字节并且必须考虑编码。

标签: c#.netstringstreamreader

解决方案


这应该有帮助:

private byte[] ReadPartial(Stream source, byte[] buffer, int start, int length)
{
    //the second parameter on the streamreader 
    //says that it should detect the encoding
    using(var reader = new StreamReader(source, true))
    {
        reader.BaseStream.Read(buffer, start, length);
    }
    return buffer;
}

推荐阅读