ハフマン解凍を書き込もうとしています。圧縮ファイル全体をバイト単位で読み取ろうとする関数がありますが、最初の150バイト程度しか読み取れず、残りがスキップされるという問題があります。理由がわかりません。
関数は次のとおりです。
public static StringBuilder odczytBajtowy(string nazwa)
{
FileStream plik = null;
StringBuilder dane = new StringBuilder("");
try
{
plik = new FileStream(@nazwa, FileMode.Open, FileAccess.Read);
int w;
int n = 0;
do
{
n++;
w = plik.ReadByte();
if (w != -1)
dane.Append(StringHelp.Reverse(Convert.ToString((byte)w,2).PadLeft(8, '0')));
}
while ((w > 0));
}
catch (FileNotFoundException)
{
Console.WriteLine("Brak pliku {0}", nazwa);
}
finally
{
if (plik != null)
{
plik.Close();
}
}
return dane;
}
ファイルが実際に終了する前に、関数がEOFを読み取るように見えます。バイト値のみを書き込んでいるため、バイト間のどこかにEOFがないことはわかっています。