dataStream.flatMap (...). Print ()
не
dataStream.flatMap (...) dataStream.print ()
Кажется, что я сделал ошибку предположения, что все виртуальные методы были переопределены, который не имел место. Я использовал zlib. ZInputStream. ReadByte (), который является просто наследованным Потоком. ReadByte (), который не делает никого, расширяются.
Я использовал zlib. ZInputStream. Читайте () вместо этого, и это работало как он, должен.
Кроме отказа использовать оператор "использования" для закрытия потока даже перед лицом исключения, которое смотрит хорошо мне. Данные определенно сжаты? Могут Вы для распаковки его с zlib на поле Linux?
Посмотрев на исходный код, это довольно ужасно - вызов к int Read(buffer, offset, length)
закончит тем, что назвал его внутреннее int Read()
метод length
времена, например. Учитывая такой шаткий запуск, я не уверен, что доверял бы коду особенно в большой степени, но я буду ожидать, что это будет работать по крайней мере немного! Вы попытались использовать SharpZipLib?
Посмотрите на пример кода более тесно, он копирует данные от обычного Filestream до ZOutputStream. Распаковка должна происходить через тот слой.
private void decompressFile(string inFile, string outFile)
{
System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream);
System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);
try
{
CopyStream(inFileStream, outZStream);
}
finally
{
outZStream.Close();
outFileStream.Close();
inFileStream.Close();
}
}
Ниже кода мог помочь Вам парни. Инстанцируйте объекта и используйте функции.
public class FileCompressionUtility
{
public FileCompressionUtility()
{
}
public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
{
byte[] buffer = new byte[2000];
int len;
while ((len = input.Read(buffer, 0, 2000)) > 0)
{
output.Write(buffer, 0, len);
}
output.Flush();
}
public void compressFile(string inFile, string outFile)
{
System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
zlib.ZOutputStream outZStream = new zlib.ZOutputStream(outFileStream, zlib.zlibConst.Z_DEFAULT_COMPRESSION);
System.IO.FileStream inFileStream = new System.IO.FileStream(inFile, System.IO.FileMode.Open);
try
{
CopyStream(inFileStream, outZStream);
}
finally
{
outZStream.Close();
outFileStream.Close();
inFileStream.Close();
}
}
public void uncompressFile(string inFile, string outFile)
{
int data = 0;
int stopByte = -1;
System.IO.FileStream outFileStream = new System.IO.FileStream(outFile, System.IO.FileMode.Create);
zlib.ZInputStream inZStream = new zlib.ZInputStream(System.IO.File.Open(inFile, System.IO.FileMode.Open, System.IO.FileAccess.Read));
while (stopByte != (data = inZStream.Read()))
{
byte _dataByte = (byte)data;
outFileStream.WriteByte(_dataByte);
}
inZStream.Close();
outFileStream.Close();
}
}