我有一个 StreamReader
我想读下一个 n
字节,并以字符串形式返回。
只有一个 ReadLine()
方法返回一个字符串,但我的文件没有换行符(CRLF)。Read()
返回 int
而不是 ReadBlock()
填补 char[]
.
有什么简单的方法吗?要不要用 Encoding.GetString()
? 那我就需要读到 byte[]
.
我看到了一个问题,编码器和字符超过1个字节,所以准确地说,我想改为 n
字节,并且必须考虑到编码问题。
这应该会有帮助。
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;
}
这应该有帮助:
这个没有用(没有读取,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不是一个好主意.