noor
2023-03-02 13:59:45 +08:00
过了几个月了突然想起这个问题已经解决了。
问题代码:chipToolResource.getInputStream().available()获取的的字节大小并不一定准确
每个平台实现的实现不一样,windows 上是正确的,linux 上不一定正确。
文档中也有说:
* <p> Note that while some implementations of {@code InputStream} will return
* the total number of bytes in the stream, many will not. It is
* never correct to use the return value of this method to allocate
* a buffer intended to hold all data in this stream.
byte[] chipToolBytes = new byte[chipToolResource.getInputStream().available()];
换了种方式就可以了
File outputFile = new File(tmp+"/chip-cert");
OutputStream outputStream = new FileOutputStream(outputFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}