输入输出流转化

8 篇文章 0 订阅

通过文件形式转换

//从一个文件拷贝到另外一个文件
File inFile = new File("E:/amaroft/file/a.txt");
File outFile = new File("E:/amaroft/file/b.txt");
FileInputStream fis=new FileInputStream(inFile);
InputStreamReader isr=new InputStreamReader(fis);
//输出流,字节流
FileOutputStream fos=new FileOutputStream(outFile);
OutputStreamWriter os=new OutputStreamWriter(fos);
char[] cbuf = new char[1024];
while((isr.read(cbuf)!=-1)) {
os.write(cbuf,0,cbuf.length);
os.flush();
}
fis.close();
isr.close();
fos.close();
os.close();

不通过文件形式转换

File file = new File("E:/amaroft/file/a.txt");
        BufferedInputStream bis = null;
        ByteArrayOutputStream arrayOutputStream = null;
        OutputStream bos = null;
        try {
            // 模拟读入一个文件,作为输入流
            bis = new BufferedInputStream(new FileInputStream(file), 1024);
            // 创建ByteArray输出流,所有的输出可以输出到ByteArray中,可以替代一个文件
            arrayOutputStream = new ByteArrayOutputStream();
            //用buffered包装一下,为了提高效率使用缓冲区流
            bos=new BufferedOutputStream(arrayOutputStream);
 
            int len=-1;
            //读取文件输入流,写入到输出流ByteArray中,输入流转成了输出流
            byte[] buf = new byte[1024];
            while ((len = bis.read(buf)) != -1) {
                bos.write(buf,0,len);
            }
            bos.flush();//清空缓冲区(非必要)
            //创建ByteArrayResource用ByteArray输出流的字节数组
            InputStreamSource inputStreamSource = new ByteArrayResource(arrayOutputStream.toByteArray());
            //至此把OutputStream已经转换成了InputStreamSource,输出流又转成了输入流
            // 又将输入流转成了输出流
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStreamSource.getInputStream());
            int bytesRead;
            byte[] buffer = new byte[4096];
            while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
                // 将文件发送到客户端
                bos.write(buffer, 0, bytesRead);
                bos.flush();
            }
        } catch (Exception e) {
            System.out.println(e);
        } finally{
            if(bos!=null){
                bos.close();//关闭BufferedOutputStream输出流
            }
            if(arrayOutputStream!=null){
                arrayOutputStream.close();//关闭ByteArray输出流
            }
            if(bis != null){
                bis.close();
            }
        }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值