【问题标题】:Java ObjectOutputStream Not Writing to ZipEntryJava ObjectOutputStream 未写入 ZipEntry
【发布时间】:2016-05-31 14:10:46
【问题描述】:

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

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

【问题讨论】:

    标签: java zip outputstream objectoutputstream


    【解决方案1】:
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    

    这个baostry 块之后超出范围。您正在写信给一个baos,而您正在查看在外部范围内声明的另一个baos,可能是该类的一个实例成员。

    【讨论】:

    • 对不起,这实际上是我的错,我的意思是把 try 语句放在 ByteArrayOutputStream 之后,就像在我的代码中一样。对不起,糟糕的代码。编辑了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 2016-08-01
    • 2019-09-13
    • 2012-08-08
    • 2019-08-15
    • 2011-08-23
    • 2015-01-05
    • 2016-07-02
    相关资源
    最近更新 更多