只读指定范围
我有一个文本文件,我只想从中读取指定的跨度(如位置20到80)。只读指定范围
我正在使用下面的代码,但它从0读取跨度的长度。
char[] buffer = new char[span.Length];
using (StreamReader reader = new StreamReader(filename))
{
reader.ReadBlock(buffer, 0, span.Length);
}
有人可以帮我吗?由于
char[] buffer = new char[span.Length];
using (StreamReader reader = new StreamReader(filename))
{
reader.BaseStream.Seek(span.Start, SeekOrigin.Begin); // or SeekOrigin.Current if you want to loop
reader.Read(buffer, 0, span.Length);
}
假设的span
类型有Start
属性。
你试过了吗?
char[] buffer = new char[span.Length];
using (StreamReader reader = new StreamReader(filename))
{
reader.ReadBlock(buffer, 20, span.Length);
}
但索引是目标数组缓冲区中不在源流中的索引。你的示例代码会溢出数组。 – 2011-03-31 14:17:59
@保罗很好。这就是我没有经过验证就发布的内容。 – cadrell0 2011-03-31 14:20:18
char[] buffer = new char[span.Length];
using (StreamReader reader = new StreamReader(filename))
{
reader.ReadBlock(buffer, startIndex, span.Length);
}
的startIndex =从哪里开始
span.Length =字符的数量阅读
但索引是目标数组缓冲区中不在源流中的索引。你的示例代码会溢出数组。 – 2011-03-31 14:15:51
@Paul Ruane是的,你是正确的...但我有一个问题,你的例子..是你使用var offset = 20; ?正如我所看到的那样,你正在寻找流出 – Gabriel 2011-03-31 14:28:46
的好地方。在我意识到“span”应该真的具有抵消作为属性之前,这是一个早期版本的人工产物。 – 2011-03-31 14:33:21
谢谢,这个答案似乎工作! – timm 2011-03-31 14:20:43