怎样从文本文件中一个一个的读入字符?

FRICSDN 2004-08-11 06:12:14
void func
{
StreamReader srRead = new StreamReader((System.IO.Stream)File.OpenRead("temp.txt"),
System.Text.Encoding.Unicode);
srRead.BaseStream.Seek(0, SeekOrigin.Begin);
srRead.BaseStream.Position = 0;
while(srRead.BaseStream.Position < srRead.BaseStream.Length)
{
srRead.Read(buffer, 0, 1);
srRead.BaseStream.Position++;
strTmp += buffer[0].ToString();

}
}
我想通过这段代码从文件中一个一个的读入字符,问题出现在srRead.Read(buffer, 0, 1);
当执行该语句后,srRead.BaseStream.Position变成了1024,那位高手能告诉我原因?
我该怎么去实现呢?
...全文
244 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csq0516 2004-08-12
  • 打赏
  • 举报
回复
up
herony420 2004-08-12
  • 打赏
  • 举报
回复
StreamReader 可能缓冲输入,使得基础流的位置与 StreamReader 的位置不匹配
herony420 2004-08-12
  • 打赏
  • 举报
回复
srRead.BaseStream.Position在读取之后会跑到文件末尾,因为是baseStream,你可以这样做
while(srRead.Peek() >= 0)
{
srRead.Read(buffer, 0, 1);
//srRead.BaseStream.Position++;
strTmp += buffer[0].ToString();

}
zjpixyniannian 2004-08-12
  • 打赏
  • 举报
回复
你buffer是怎么定义的呀?
还有read后,位置应该会自动向前的,不用写srRead.BaseStream.Position++;
charliecy 2004-08-12
  • 打赏
  • 举报
回复
using(TextReader srRead = new StreamReader(File.OpenRead("Temp.txt"), System.Text.Encoding.ASCII))
{
char[] buffer = new char[1];
while(srRead.Read(buffer, 0, 1)>0)
Console.WriteLine(buffer[0]);
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧