java面试-0135-InputStream不能重复读取原因及解决?√
InputStream的数据源(如网络连接、文件)可能不支持随机访问。例如网络流读取数据后不能返回
InputStream的设计目标是高效处理大数据流(如网络数据、文件),避免缓存整个数据,节省内存
用ByteArrayOutputStream保存字节数据 支持通过 reset() 方法重置指针。
用BufferedInputStream 的 mark() 和 reset()
将数据缓存到临时文件
InputStream inputStream = new FileInputStream(“example.txt”);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
byte[] data = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(data);
System.out.println(new String(bais.readAllBytes())); // 读取并打印
bais.reset(); // 重置指针
System.out.println(new String(bais.readAllBytes())); // 再次读取并打印