我编写了一个程序,该程序使用
Java 9 从InputStream
获取所有字节,
InputStream.readAllBytes()
现在,我想将其导出到 Java 1.8及更低版本。有等效功能吗?找不到一个。
答案 0 :(得分:0)
InputStream.readAllBytes()
可用,因为Java 9而不是Java 7 ...
除此之外,您(没有第三方)可以:
byte[] bytes = new byte[(int) file.length()];
DataInputStream dataInputStream = new DataInputStream(new FileInputStream(file));
dataInputStream .readFully(bytes);
或者如果您不介意使用第三方(Common IO):
byte[] bytes = IOUtils.toByteArray(is);
番石榴也有帮助:
byte[] bytes = ByteStreams.toByteArray(inputStream);
答案 1 :(得分:0)
您可以像这样使用旧的read
方法:
public static byte[] readAllBytes(InputStream inputStream) throws IOException {
final int bufLen = 1024;
byte[] buf = new byte[bufLen];
int readLen;
IOException exception = null;
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
while ((readLen = inputStream.read(buf, 0, bufLen)) != -1)
outputStream.write(buf, 0, readLen);
return outputStream.toByteArray();
} catch (IOException e) {
exception = e;
throw e;
} finally {
if (exception == null) inputStream.close();
else try {
inputStream.close();
} catch (IOException e) {
exception.addSuppressed(e);
}
}
}