字节流转化为字符流输出

字节流和字符流的区别

字符流在进行输出的时候会使用缓冲区,而字节流不使用缓冲区。在关闭字符流的时候会强制的将缓冲区的内容进行输出,但如果不关闭流缓冲区的内容是无法输出的。
那么什么是缓冲区那?
如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。简单的理解就是缓冲区是一段特殊的内存。

在字符流的操作中,所有的字符都是在内存中形成的,在输出前会将所有的内容暂时保存在内存之中,所以使用了缓冲区暂存数据。

下面是将字节流转化为字符流输出的一段代码

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamUtils {


    public static String streamToString(InputStream  in){
        String result ="";

        try{
            //new 一个字节输出流的数组
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            //[1]new 一个字节数组
            byte[] buffer = new byte[1024];
            int length = 0;
            while (  (length =  in.read(buffer)) !=-1) {
                out.write(buffer, 0, length);
                //[2]强制关闭缓冲区
                out.flush();
            }

            result = out.toString();//[3]输出字符串

            out.close();
        }catch (Exception e) {
            e.printStackTrace();
        }


        return result;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值