我写了一个程序,从Java 9中的InputStream获取所有字节,
InputStream
InputStream.readAllBytes()
字符串现在我想导出到Java 1.8及以下,有没有等价的函数?找不到。
2izufjch1#
这里有一种方法可以解决这个问题,而不依赖于第三方库:
inputStream.reset(); byte[] bytes = new byte[inputStream.available()]; DataInputStream dataInputStream = new DataInputStream(inputStream); dataInputStream.readFully(bytes);
字符串或者,如果你不介意使用第三方(Commons IO):
byte[] bytes = IOUtils.toByteArray(is);
型Guava还有助于:
byte[] bytes = ByteStreams.toByteArray(inputStream);
型
m3eecexj2#
你可以像这样使用read方法:
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); } } }
字符串
2条答案
按热度按时间2izufjch1#
这里有一种方法可以解决这个问题,而不依赖于第三方库:
字符串
或者,如果你不介意使用第三方(Commons IO):
型
Guava还有助于:
型
m3eecexj2#
你可以像这样使用
read
方法:字符串