Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Кто использовал библиотеку ICSharpCode?


Автор: vlsaf 2.10.2008, 11:13
Всем привет.

Пытаюсь научиться пользоваться библиотекой ICSharpCode для сжатия строки.
Проект для PDA, подтому стандартного пространства имен System.IO.Compression там нету.

Что-то не получается сжать строку.

Вот пример из мануала
Код

        using (Stream inStream = new GZipInputStream(File.OpenRead(args[0])))
        using (FileStream outStream = File.Create(Path.GetFileNameWithoutExtension(args[0]))) {
            byte[] buffer = new byte[4096];
            StreamUtils.Copy(inStream, outStream, buffer);
        }


Но у меня не файл, а строка.
Строка переводится в поток при помощи 

Код

           string strInput = "1111111111111111111111111111111111111111111111111111";

            MemoryStream memoryStream = new MemoryStream();
            memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(strInput), 0, System.Text.Encoding.UTF8.GetBytes(strInput).Length);


Хочется иметь следующую цепочку.
Входной поток
Выходной поток
Сжатая строка.

Что-то не получается.
Может кто поможет?
Повышение репутации гарантировано  smile 

Автор: feanor59 3.9.2009, 17:26
Между делом, тему апну. Проблема в том, что при работе с MemoryStream в выходной поток (который должен содержать сжатую строку), записывается только 2 байта (всегда одни и те же, вне зависимости от входных данных), которые ещё и не читаются из этого потока (хотя размер потока = 2).
Код

public Form1()
    {
      InitializeComponent();

      MemoryStream outdata = new MemoryStream();
      DeflaterOutputStream comp = new DeflaterOutputStream(outdata);
      string str = "Test String!!!!";
      Byte[] testBuff = Encoding.ASCII.GetBytes(str);
      comp.Write(testBuff, 0, testBuff.Length);
      comp.Flush();
      outdata.Flush();

      Byte[] compBuff = new Byte[ms.Length];
      outdata.Read(compBuff, 0, compBuff.Length);
      textBox1.Text = Encoding.ASCII.GetString(compBuff, 0, compBuff.Length);
    }

В textBox1 всегда пусто, но никакие эксепшены не вызываются.

Автор: feanor59 3.9.2009, 21:46
разобралсяsmile в коде не хватает строчки comp.Finish();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)