有一个OutputStream 流,现在需要将其用简单的方法转化为 InputStream,用什么方法啊,先谢谢大家。

解决方案 »

  1.   

    如果是要将一般的output流写入到input流中,除了用缓冲区数组外好象没有什么好办法
    不过如果是具体的某一种流,比如说网络或文件。
    FileChannel fc=(new FileOutputStream("from.txt")).getChannel;
    FileChannel gc=(new FileOutputStream("to.txt")).getChannel;
    fc.transferTo(gc);
    这就ok了
      

  2.   

    楼主运气真好,前几天看到这个问题我搞不明白这个东西有什么用,看到有人问这个问题。我才相信了这个东西有用。楼主能讲讲要这个是干嘛用吗!下面的这个类可以提供解决,是有apache提供的类。文档:
    http://jakarta.apache.org/commons/io/api-release/org/apache/commons/io/CopyUtils.htmljar包:
    http://mirror.vmmatrix.net/apache/jakarta/commons/io/binaries/commons-io-1.1.tar.gz
      

  3.   

    我愣是没搞懂,什么叫怎样将OutputStream 用简单的方法转化为 InputStream ? 一个O Stream是用来写的,
    一个I Stream是用来读的。一个没有保存任何数据的东西,怎么来读呢?而假设一个写"abc.txt",一个读"abc.txt",那个不叫转化啊!
      

  4.   

    java里不时有个PipedOutputStream和PipedInputStream,管道不是可以将一个程序或线程的输出作为另一个程序的输入流吗。我也没用过,不是很清楚
      

  5.   

    是这样的,我现在调用一个公共方法得到输出流OutputStream(FileOutputStream),这个流是PDF文档输出流,我现在要调用另一个公共方法,这个方法是一个上传文件的方法,参数就是InputStream.我要将PDF文档输出流OutputStream转换为InputStream作为上传文件公共方法的参数,将这个PDF文档输出流OutputStream作为文件上传到服务器上保存。我现在已经找到一个方法转化:PDF 文件输出流 outputStream =   ICommonPdfService.createPdf(VO对象);
      ByteArrayOutputStream baos = (ByteArrayOutputStream) outputStream ;

      File tempPdfFile = new File("tempPdf.pdf");
    FileOutputStream fos = new FileOutputStream( tempPdfFile );
     
      fos.write(baos.toByteArray());
      fos.flush();

     FileInputStream pdfInputStream  = new FileInputStream(tempPdfFile);
              //上传为文件保存          IDocumentMgtBS.upload(pdfInputStream)
      

  6.   

    把主客分清楚A借书给B,这本书对A来说是Out,对B来说是In如果A的这本书本来是C借给A的,ok,对于A来说,他先 get book from C,这是In
    然后 give book to B,这是Out---乱了,不知道怎么说了
      

  7.   

    说正题吧PDF文档流对你的这个处理类来说是InputStream
    你可能从文件或者数据库得到这个输入流
    FileInputStream pdfInputStream  = new FileInputStream(tempPdfFile);事实上,上传类正好需要的是输入流,这并不矛盾。上面的操作和PDF是如何生成的一点关系都没有。如果你不想写这个临时文件,那么可以用Buffer,这样的话,PDF文档流就来自
    缓冲区的InputStream,然后传递给upload类PDF类写Buffer用的是OutputStream
    out.write(byte[] buffer)可以写入缓冲区
      

  8.   

    说明一下:我得到的输出流OutputStream里面已经写进去了数据,得到的输出流是装满了数据的输出流。
      

  9.   

    再说明一下:
      我得到的这个OutputStream可以作为PDF文件显示,也可以作为文件保存。现在的问题是我要将其转换为InputStream作为我的一个上传文件的公共方法的参数,上传到服务器上保存。上传文件的公共方法要用输入流InputStream作为参数。