Java ObjectOutputStream不写入ZipEntry

时间:2016-02-19 05:28:21

标签: java zip outputstream objectoutputstream

我正在尝试使用ObjectOutputStream将对象序列化为ZipEntry,但它似乎没有写任何东西,因为当我打印生成的字节数组时,它显示为null。我尝试使用ZipOutputStream编写一个字符串,并在打印时生成的字节数组得到了相当大的结果。所以我的问题是:为什么objectoutput流没有正确写入ZipEntry。 (ConfigEntry确实实现了Serializable)。

  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));

1 个答案:

答案 0 :(得分:0)

ByteArrayOutputStream baos = new ByteArrayOutputStream();

baostry阻止后超出范围。您正在写一个baos并且您正在查看在外部作用域中声明的另一个baos,可能是该类的实例成员。