String、InputStream、OutputStream格式转换

1、String –> InputStream

InputStream stream = new ByteArrayInputStream(str.getBytes());

或者

ByteArrayInputStream stream= new ByteArrayInputStream(str.getBytes());

2、InputStream–>String

InputStream input;

StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
 for (int n; (n = input.read(b)) != -1;) {
      out.append(new String(b, 0, n));
 }
out.toString();

3、String –> OutputStream

OutputStream os = System.out;
os.write(string.getBytes())

4、OutputStream –> String

ByteArrayOutputStream baos = new ByteArrayOutputStream();
//向OutPutStream中写入,如 message.writeTo(baos);
String str = baos.toString();
### Java 中 `InputStream` 和 `OutputStream` 的使用方法 #### 一、基本概念 在Java中,`InputStream`用于表示字节输入流,而`OutputStream`则代表字节输出流。两者并不直接继承自同一个父类,而是各自独立设计来专门处理数据的读取与写入操作[^2]。 对于`InputStream`而言,存在多个具体的实现类以适应不同场景下的需求,比如文件读取(`FileInputStream`)、内存数组读取(`ByteArrayInputStream`)以及对象反序列化(`ObjectInputStream`)等情形[^1]。 同样地,在`OutputStream`方面也有相应的具体实现用来完成特定类型的输出任务,例如向磁盘保存二进制数据或是将对象状态持久化到存储介质上。 #### 二、代码实例展示 ##### (一)利用`FileInputStream`和`FileOutputStream`进行简单的文件复制功能: ```java import java.io.*; public class FileCopyExample { public static void main(String[] args) throws IOException { try (FileInputStream fis = new FileInputStream("source.txt"); FileOutputStream fos = new FileOutputStream("destination.txt")) { int byteRead; while ((byteRead = fis.read()) != -1) { fos.write(byteRead); } } catch (IOException e) { System.out.println(e.getMessage()); } } } ``` 上述程序通过创建两个流对象——一个是源文件对应的输入流,另一个为目标位置准备好的输出流;接着在一个循环体内逐个字符地从原文件读出并立即写入新文件直至遇到文件结束标志(-1),从而实现了最基础版本的文件拷贝逻辑。 ##### (二)换`StringBuffer`中的字符串为字节数组再作为输入源供其他组件消费: ```java import java.io.*; import java.nio.charset.StandardCharsets; public class StringBufferToStreamExample { private static final String CONTENT = "This is a test string."; public static ByteArrayInputStream getInputStream() { // 将StringBuffer的内容化为字节数组形式以便于后续加工处理 byte[] bufferBytes = CONTENT.getBytes(StandardCharsets.UTF_8); return new ByteArrayInputStream(bufferBytes); } public static void processDataFromInputStream(InputStream inputStream){ try(BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream))){ String line=reader.readLine(); System.out.println(line); }catch(IOException ex){ System.err.print(ex.toString()); } } public static void main(String[] args)throws Exception{ processDataFromInputStream(getInputStream()); } } ``` 此段代码展示了如何先构建一个基于内存缓冲区的输入流,之后将其传递给另一函数内部进一步解析或执行某些业务流程的操作模式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值