我有一個文本文件,我只想從中讀取指定的跨度(如位置20到80)。只讀指定範圍
我正在使用下面的代碼,但它從0讀取跨度的長度。
char[] buffer = new char[span.Length];
using (StreamReader reader = new StreamReader(filename))
{
reader.ReadBlock(buffer, 0, span.Length);
}
有人可以幫我嗎?由於
我有一個文本文件,我只想從中讀取指定的跨度(如位置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