【问题标题】:Unable to save and retrieve using ByteAarrayOutputStream无法使用 ByteAarrayOutputStream 保存和检索
【发布时间】:2014-05-08 09:43:26
【问题描述】:

我正在制作这个 J2ME 应用程序,但是当我尝试保存时遇到了一些问题

这就是我存储它们的方式

        PAR par = new PAR(oldMonPay, newMonPay, oldInterest);
        par.setOldMPay(oldMonPay);
        par.setNewMPay(newMonPay);
        par.setOldInt(oldInterest);

这就是我保存和检索的方式

public static byte[] parseObjPAR(PAR p) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DataOutputStream out;

    try {
        out = new DataOutputStream(baos);
        out.writeUTF(p.getNewMPay());
        out.writeUTF(p.getOldInt());
        out.writeUTF(p.getOldMPay());



    } catch (IOException e) {
    }
    return baos.toByteArray();
}

public static PAR parseByteArrPAR(byte[] b) {
    PAR p = null;
    ByteArrayInputStream bais;
    DataInputStream in;

    if (b != null) {
        try {
            bais = new ByteArrayInputStream(b);
            in = new DataInputStream(bais);
            p = new PAR(
                    in.readUTF(),
                    in.readUTF(),
                    in.readUTF());    
        } catch (IOException e) {
        }
    }
    return p;
}

这就是我显示检索到的信息的方式,还有一个问题是这个东西没有显示所有数据,而只显示了 3 条记录。我认为是前 3 个。

 public void populatePAResult(PAR[] p) {
    try {
        for (int i = 0; i < p.length; i++) {
            String oldMP = p[i].getOldMPay();
            String newMP = p[i].getNewMPay();
            String oldI = p[i].getOldInt();



            result1.append("Day : " + oldMP, null);
            result1.append("Time : " + oldI, null);
            result1.append("Technology : " + newMP, null);

        }
    } catch (Exception e) {
    }
}

【问题讨论】:

  • 您看到的问题是什么?知道会有所帮助!
  • 建议你在你的读/写方法中正确地实现异常处理——你默默地忽略任何我怀疑会有所帮助的 I/O 错误,至少将堆栈跟踪转储到控制台。
  • 好吧,它不存储我认为的值,当我调用该字符串值时,它给出了 null..
  • 你指的是哪个字符串值?你有例外吗?还是只是没有按预期工作?
  • 另外,您在parseObjPAR 方法中写入PAR 数据的顺序与parseByteArrPAR 中使用的构造函数中的顺序不同。

标签: java rms


【解决方案1】:

在写入数据的parseObjPAR方法中,顺序为:

out.writeUTF(p.getNewMPay());
out.writeUTF(p.getOldInt());
out.writeUTF(p.getOldMPay());

而当你读回它并传递构造函数期望的顺序时是不同的:

PAR par = new PAR(oldMonPay, newMonPay, oldInterest);

所以即使不是null,加载的数据也是无效的。

【讨论】:

  • 好的,我解决了这个问题,所以现在我必须清除以前的数据?因为它又给了null..你能再次检查我的问题吗?我已经编辑了它
猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
相关资源
最近更新 更多