我正在使用C#来读取文件,我需要(有时)在输出下一个字节之前跳过几个字节。例如:
31 32 33 34 35 36 37 38 39
我想跳过前两个(或任何给定数字)字节,然后输出下一个字节。问题是,使用下面的代码不会这样做,我不知道如何。我需要能够在整个程序中使用“跳过”功能。如果有人能帮助我,我将非常感激!
String fileDirectory = "C:\\t.txt";
StreamReader reader = new StreamReader(fileDirectory);
long stickNoteLength = fileDirectory.Length;
int hexIn;
String hex = "";
for (int i = 0; (hexIn = reader.Read()) != -1; i++)
{
for (int x = 0; x < 2; x++)
{
hex = hexIn.ToString("X2");
}
MessageBox.Show(hex);
}
答案 0 :(得分:2)
x
上的内部for循环不会消耗文件中的任何字符。它实际上只是取当前字节并将其连续两次转换为十六进制,实际上没有任何效果。它实际上是i
上的外部循环消耗字符。你想做更像这样的事情:
for (int i = 0; (hexIn = reader.Read()) != -1; i++)
{
if (i >= 2)
{
hex = hexIn.ToString("X2");
MessageBox.Show(hex);
}
}
虽然使用Seek
函数直接跳转到下一个想要阅读的位置会更有效:
reader.BaseStream.Seek(2, SeekOrigin.Current); // jump two characters forward