2016-02-19 3 views
-1

Я пытаюсь сериализовать объект в ZipEntry с помощью ObjectOutputStream, но, похоже, он ничего не пишет, потому что когда я печатаю массив байтов, он показывает null. Я попытался написать строку с ZipOutputStream, и после печати полученный массив байтов получил значительный результат. Итак, мой вопрос: почему поток objectoutput неправильно записывает в ZipEntry. (ConfigEntry реализует Serializable).Java ObjectOutputStream Not Writing to ZipEntry

String s = "Tired, Exhausted"; 
    ConfigEntry con = new ConfigEntry("rand", "random", 3); 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    try { 

    ZipOutputStream zos = new ZipOutputStream(baos); 
    ZipEntry entry = new ZipEntry("test.txt"); 
    ObjectOutputStream obs = new ObjectOutputStream(zos); 

    zos.putNextEntry(entry); 


    obs.writeObject(con); 
    obs.close(); 
    zos.closeEntry(); 
    zos.close(); 


    } catch(IOException ioe) { 
    ioe.printStackTrace(); 
    } 


    os = bs.getOutputStream(); 
    byte[] result = baos.toByteArray(); 
    String test = new String(result, "UTF-8"); 
    Log.v("Mac Address", test); 
    Log.v("Mac Address", Arrays.toString(result)); 

ответ

0
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

baos Это выходит из области видимости после try блока. Вы пишете один baos, и вы изучаете другой baos, объявленный во внешней области видимости, возможно, член экземпляра класса.

+0

Извините, это было на самом деле плохо, я хотел поставить инструкцию try после ByteArrayOutputStream, как в моем коде. Извините за плохой код. Отредактировал мой вопрос. – KilRil