【发布时间】:2011-11-16 04:30:53
【问题描述】:
有没有更有效的方法在 Java 中打破字节数组中的数据? 我编写了以下函数来读取具有固定长度数据字段的二进制文件。但是性能真的很慢,我需要读取一个包含30,000条记录,每条记录长度为300字节的二进制文件,每条记录包含240个字段。 有什么建议吗?
public void breakField(byte[] input) {
ByteArrayInputStream bais = new ByteArrayInputStream(input);
byte[] tmp = new byte[2];
bais.read(tmp);
this.id = new String(tmp);
tmp = new byte[4];
bais.read(tmp);
this.name = new String(tmp);
tmp = new byte[8];
bais.read(tmp);
this.phone = new String(tmp);
tmp = new byte[15];
bais.read(tmp);
this.otherInfo = new String(tmp);
.... more fields...
}
【问题讨论】:
-
尝试逐记录(每300字节)而不是逐字段读取文件,并将读取的数据拆分为稍后在内存中的数据字段