通过ByteArrayOutputStream将inputStream转变为outputStream

通过ByteArrayOutputStream将inputStream转变为outputStream

 

 

1.首先,先编写一个获取文件输入流的方法 ops()。

2. 之后在调用此方法获得输入流,并通过 castToBAOStream(Object obj,int bufferSize)进行转化。

3.最后,写出 转化成功的 输出流。

 

 

 

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

 

public class Stream {  

  

    public static final int StreamFlushBufferSzie=100;//buffer size= 1K  

      

      public static ByteArrayOutputStream castToBAOStream(Object obj,int bufferSize){  

              

//          Log logger = LogFactory.getLog(CommonUtil.class);  

              

            ByteArrayOutputStream baos=new ByteArrayOutputStream();  

              

            if(obj.getClass().isInstance(baos)){  

                return (ByteArrayOutputStream)obj;  

            }else{  

                InputStream fis;  

                try{  

                    fis=(FileInputStream)obj;  

                    try{  

                        BufferedInputStream bis=new BufferedInputStream(fis);     

                        baos=new ByteArrayOutputStream();      

                        BufferedOutputStream bos=new BufferedOutputStream(baos);    

                        int ch;      

                        int i=0;  

                        while((ch=bis.read())!=-1){        

                                bos.write(ch);    

                                if(i++==bufferSize){  

                                    bos.flush();  

                                    i=0;  

                                }  

                        }      

                        bos.flush();    //提交文件流,很关键  

                        bis.close();     

                        return baos;  

                    }catch(ClassCastException e){  

//                      logger.info("Stream object not a ByteArrayOutputStream or a FileInputStream:",e);  

                        return null;  

                    }catch(Exception e){  

//                      logger.info("baos is null:",e);  

                        return null;  

                    }  

                }catch(ClassCastException e){  

                    fis=(InflaterInputStream)obj;  

                    try{  

                        baos=new ByteArrayOutputStream();      

                        BufferedOutputStream bos=new BufferedOutputStream(baos);    

                        int ch;      

                        int i=0;  

//                      ii.read(b, off, len)  

                        byte[] by = new byte[2048];  

                        while((ch=fis.read(by))!=-1){        

                                bos.write(by,0,ch);    

                                if(i++==bufferSize){  

                                    bos.flush();  

                                    i=0;  

                                }  

                        }      

                        bos.flush();    //提交文件流,很关键  

                        fis.close();     

//                      ZipUtil.getZipName().close();  

                        return baos;  

                    }catch(ClassCastException e1){  

//                      logger.info("Stream object not a ByteArrayOutputStream or a FileInputStream:",e1);  

                        return null;  

                    }catch(Exception e1){  

//                      logger.info("baos is null:",e1);  

                        return null;  

                    }  

                }  

                      

            }  

        }  

        

     //产生一个文件输入流  

     public static InputStream ops() throws FileNotFoundException {  

         File file = new File("d://lin.txt");     

         FileInputStream fileInputStream = new FileInputStream(file);  

         return fileInputStream;  

     }  

       

     public static void main(String[] args) throws IOException {  

          

         try {  

//          OutputStream outputStream = ops();  

            InputStream inputStream = ops();   

            ByteArrayOutputStream baos = castToBAOStream(inputStream,StreamFlushBufferSzie);  

                InputStream is = new ByteArrayInputStream(baos.toByteArray());  

                File file=new File("d://new.txt");  

                FileOutputStream outb=new FileOutputStream(file);  

  

                    int bytesRead;  

                    byte[] buf = new byte[4 * 1024];  

                           while((bytesRead = is.read(buf))!=-1){  

                               outb.write(buf,0,bytesRead);  

                           }  

                           outb.flush();  

                           outb.close();  

                           is.close();  

             System.out.println(inputStream);  

                              

        } catch (FileNotFoundException e) {  

            // TODO Auto-generated catch block  

            e.printStackTrace();  

        }  

           

    }  

       

        

}  

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值