我如何从StreamReader中读取一个长度为n的字符串?

问题描述 投票:0回答:1

我有一个 StreamReader 我想读下一个 n 字节,并以字符串形式返回。

只有一个 ReadLine() 方法返回一个字符串,但我的文件没有换行符(CRLF)。Read() 返回 int 而不是 ReadBlock() 填补 char[].

有什么简单的方法吗?要不要用 Encoding.GetString()? 那我就需要读到 byte[].

我看到了一个问题,编码器和字符超过1个字节,所以准确地说,我想改为 n 字节,并且必须考虑到编码的问题。

c# .net string streamreader
1个回答
1
投票

这应该会有帮助。

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;
}

0
投票

这应该有帮助:

这个没有用(没有读取,m=0):

        byte[] buffer = new byte[4];
        int m = sr.BaseStream.Read(buffer, 0, 4);
        string s = sr.CurrentEncoding.GetString(buffer);

但是这个可以:

        char[] cs= new char[4];
        sr.ReadBlock(inhalt, 0, 4);
        string s = new string(cs);

因此我认为使用BaseStream不是一个好主意.

© www.soinside.com 2019 - 2024. All rights reserved.