java分块读取文件_java-如何在原始数据文件中使用块分隔符?

您可以先将数据块的长度作为固定大小的值写入文件,例如一个4字节的整数,后跟数据本身:

public void appendChunk(byte[] data, File file) throws IOException {

DataOutputStream stream = null;

try {

stream = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file, true)));

stream.writeInt(data.length);

stream.write(data);

} finally {

if (stream != null) {

try {

stream.close();

} catch (IOException e) {

// ignore

}

}

}

}

如果以后您必须从该文件读回这些块,则可以从读取第一个块的长度开始.现在,您可以决定是读取块数据,还是跳过它并继续下一个块.

public void processChunks(File file) throws IOException {

DataInputStream stream = null;

try {

stream = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));

while (true) {

try {

int length = stream.readInt();

byte[] data = new byte[length];

stream.readFully(data);

// todo: do something with the data

} catch (EOFException e) {

// end of file reached

break;

}

}

} finally {

if (stream != null) {

try {

stream.close();

} catch (IOException e) {

// ignore

}

}

}

}

您还可以添加有关块的其他元数据,例如使用stream.writeUTF(…)写入文件的原始名称.您只需要确保以相同的顺序写入和读取相同的数据即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值