读书人

经过ByteArrayOutputStream将inputStr

发布时间: 2012-06-27 14:20:09 作者: rapoo

通过ByteArrayOutputStream将inputStream转变为outputStream

通过ByteArrayOutputStream将inputStream转变为outputStream

?

?

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

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

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

?

?

?

102030405060708090100110120130140150

?

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();          }                 }                 }  

?

?

?

读书人网 >移动开发

热点推荐