inputstream 转成 outputstream
时间: 2025-07-23 07:03:00 浏览: 2
### 将 `InputStream` 转换为 `OutputStream` 的实现方法
在 Java 中,可以通过多种方式将 `InputStream` 数据写入到 `OutputStream`。以下是基于内存缓冲区的方式实现的一个示例代码:
```java
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class InputStreamToOutputStream {
public static void convert(InputStream inputStream, OutputStream outputStream) throws Exception {
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
}
public static void main(String[] args) {
try (
InputStream inputStream = new java.io.FileInputStream("input.txt");
OutputStream outputStream = new java.io.FileOutputStream("output.txt")
) {
convert(inputStream, outputStream);
System.out.println("转换完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在此代码中,通过循环读取 `InputStream` 并将其内容逐块写入 `OutputStream` 来实现两者之间的数据传递[^1]。
如果需要更灵活的操作,可以考虑使用 `ByteArrayOutputStream` 和其他中间存储机制来缓存数据后再进行操作[^3]。
另外需要注意的是,在实际应用过程中可能还需要处理异常情况以及确保资源能够正确关闭以避免泄漏问题的发生[^2]。
### 使用 ByteArrayOutputStream 实现的另一种方式
当希望先加载整个输入流再一次性写出时可采用如下做法:
```java
import java.io.*;
public class ConvertStreamExample {
public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[4096];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
return output.toByteArray();
}
public static void writeToStream(byte[] bytes, OutputStream out) throws IOException{
out.write(bytes);
out.flush();
}
public static void main(String[] args){
File inputFile = new File("sourcefile.dat");
File outputFile = new File("destinationfile.dat");
try(
InputStream in = new FileInputStream(inputFile);
OutputStream out = new FileOutputStream(outputFile)
){
byte[] byteArray = toByteArray(in);
writeToStream(byteArray,out);
System.out.println("文件已成功复制!");
}catch(IOException ex){
ex.printStackTrace();
}
}
}
```
此版本展示了如何利用 `ByteArrayOutputStream` 把来自任意长度源的数据收集起来形成字节数组之后再传送给目标输出流[^5]。
阅读全文
相关推荐


















