java inputstream 转 outputstream
时间: 2023-02-06 18:07:28 浏览: 87
要将 Java 的 InputStream 转换为 OutputStream,您可以使用以下方法之一:
1. 使用 `java.io.BufferedInputStream` 和 `java.io.BufferedOutputStream` 缓冲流。这两个类都实现了 `InputStream` 和 `OutputStream` 接口,因此可以很容易地将它们相互转换。例如:
```
InputStream inputStream = ...;
OutputStream outputStream = ...;
try (BufferedInputStream bis = new BufferedInputStream(inputStream);
BufferedOutputStream bos = new BufferedOutputStream(outputStream)) {
int data;
while ((data = bis.read()) != -1) {
bos.write(data);
}
}
```
2. 使用 `java.io.InputStreamReader` 和 `java.io.OutputStreamWriter` 字符流。这两个类都实现了 `Reader` 和 `Writer` 接口,并可以将字节流转换为字符流。例如:
```
InputStream inputStream = ...;
OutputStream outputStream = ...;
try (InputStreamReader isr = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
OutputStreamWriter osw = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)) {
int data;
while ((data = isr.read()) != -1) {
osw.write(data);
}
}
```
3. 使用 `java.nio.channels.Channels` 类的 `newChannel` 方法。这个方法可以将字节流包装在 `ReadableByteChannel` 或 `WritableByteChannel` 中,这些类均实现了 `Channel` 接口。例如:
```
InputStream inputStream = ...;
OutputStream outputStream = ...;
ReadableByteChannel inputChannel = Channels.newChannel(inputStream);
WritableByteChannel outputChannel = Channels.newChannel(outputStream);
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (inputChannel.read(buffer) != -1) {
buffer.flip();
outputChannel.write(buffer);
buffer.clear();
}
```