TextReader.Peek 方法是C#中一个用于读取文本流字符的方法,该方法可读取文本流中下一个字符并返回其Unicode编码,但并不读取该字符。下面是该方法的详细解释和使用方法攻略:
方法签名
public virtual int Peek ();
返回值
Peek() 方法返回整数,即下一个字符的Unicode编码。如果没有可供读取的字符,则返回 -1。
使用方法
Peek() 方法主要用于检测文本流中是否有下一个字符可读取,以便在读取这个字符之前进行一些操作。一般来说,Peek() 方法可以和Read() 方法一起使用,以判断需要读取的字符类型。
Peek() 方法具体使用方法如下:
- 创建一个TextReader对象,并打开文本流。通常情况下,可以使用StreamReader类来打开文本文件。
csharp
StreamReader sr = new StreamReader("file.txt"); - 定义一个变量存储Peek()方法返回值,并调用Peek()方法。
csharp
int nextChar = sr.Peek(); - 判断返回值是否为 -1。如果是 -1,则表示文本流中没有可供读取的字符;否则,返回值就是下一个字符的Unicode编码。
csharp
if (nextChar != -1)
{
// 操作
} - 在操作完成后,使用Read()方法读取下一个字符。
csharp
char ch = (char) sr.Read();
示例说明
以下是一个示例,展示如何用Peek()方法判断文本流中下一个字符是否为数字或字母。
using System;
using System.IO;
class Program
{
static void Main()
{
string str = "This is a 123 Demo Text.";
// 创建StreamReader对象
StreamReader sr = new StreamReader(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)), System.Text.Encoding.UTF8);
// Peek()方法读取下一个字符
int nextChar = sr.Peek();
while (nextChar != -1)
{
char ch = (char)nextChar;
if (Char.IsDigit(ch))
{
Console.WriteLine("Next character is a digit.");
}
else if (Char.IsLetter(ch))
{
Console.WriteLine("Next character is a letter.");
}
// Read()方法读取下一个字符
ch = (char)sr.Read();
// Peek()方法读取下一个字符
nextChar = sr.Peek();
}
sr.Close();
}
}
运行结果:
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a digit.
Next character is a digit.
Next character is a digit.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
Next character is a letter.
以上示例使用StreamReader和MemoryStream读取一个字符串。Peek()方法和Read()方法循环读取字符串中的字符,并检查下一个字符是否为数字或字母。如果是数字,就在控制台输出“Next character is a digit.”;如果是字母,就在控制台输出“Next character is a letter.”。
另一个示例:使用Peek()方法进行流的复制。
using System;
using System.IO;
class Program
{
static void Main()
{
// 创建StreamReader对象
StreamReader sr = new StreamReader("file.txt");
// 创建StreamWriter对象
StreamWriter sw = new StreamWriter("file_copy.txt");
// Peek()/Read()方法复制文本流
int nextChar = sr.Peek();
while (nextChar != -1)
{
sw.Write((char)nextChar);
nextChar = sr.Read();
nextChar = sr.Peek();
}
sr.Close();
sw.Close();
}
}
以上示例使用StreamReader和StreamWriter将一个文本文件进行复制。Peek()方法和Read()方法循环读取文件中的字符,并将它们写入到另一个文件中。
这些示例都展示了Peek()方法的基本使用方法。Peek()方法是一个非常有用的方法,使用它可以预测流中下一个字符的类型。