100分请高手解答。在线等:。StreamReader可以往后读数据吗?
我做了一个每日一贴的功能,有前一贴和后一贴,我想按前一贴时往后读。。请问怎么实现
路径:
sr = new StreamReader(dir + "\\DOC\\每日一贴.txt ",System.Text.Encoding.Default);
try
{
if(sr.ReadLine() != null)
{
this.txtTips.Text = " ";
this.txtTips.Text = sr.ReadLine();
}
}
catch(Exception ce)
{
sr = new StreamReader(dir + "\\DOC\\每日一贴.txt ");
}
请高手解答。在线等
------解决方案--------------------要设置BaseStream的Postion。你可以每次读出来一个单元记录下这时基础流的位置,这个位置就是下个单元的开始位置。
------解决方案--------------------你的贴子的问题没有说得清楚,到底是什么地方出了问题.
每日一贴.txt,这个文件,是按什么格式存的?
读出来的东西,是放到那个文本框里就行了吗.
------解决方案--------------------我觉得,如果你要实现前/后读 每日一帖,不如将这些帖的内容用 Xml 格式存放,这样,用 XPath 来查询会很方便:
例如:
<?xml version= '1.0 ' encoding= 'utf-8 ' ?>
<TipsOfTheDay>
<LastTipId> 2/LastTipId>
<Tips>
<Tip id= "1 ">
<![CDATA[
Internet Explore 7 增加了反钓鱼机制,它能是你远离已知的恶意钓鱼网站
]]>
</Tip>
<Tip id= "2 ">
<![CDATA[
Internet Explore 7 可以实现标签浏览。您不必打开多个 Internet Explorer 窗口即可浏览多个网页。
]]>
</Tip>
<Tip id= "3 ">
<![CDATA[
更多的 Tip ]]>
</Tip>
<Tip id= "4 ">
<![CDATA[
更多的 Tip ]]>
</Tip>
<!-- 其它的 Tip -->
</Tips>
</TipsOfTheDay>
程序开始时,先读取 LastTipId ,然后根据这个 Id 去找下一条 Tip。
XmlDocument doc = new XmlDocument();
doc.Load( "Tip.xml ");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator nodes = nav.Select( "/TipsOfTheDay/LastTipId ");
nodes.MoveNext();
int tipId = nodes.Current.ValueAsInt;
int nextTipId = tipId + 1; // 计算下一条 Tip 的 Id
if(nextTipId > MaxTipId) nextTipId = 1;
string xpath = String.Format( "/TipsOfTheDay/Tips/Tip[@id={0}] ", nextTipId.ToString());
nodes = nav.Select(xpath);
nodes.MoveNext();
string tip = nodes.Current.Value;
上面的代码适当修改,很容易变为获取上一条/下一条的代码。
如果真的要读文本文件,那么,你只能规定好格式。如楼上说的,要保存好每条 Tip 位置,设置 流的 Position 属性来读