String str ="a,b,c" ;
ByteArrayInputStream   bos=new ByteArrayInputStream(str.getBytes());
 ByteArrayOutputStream  dis =new ByteArrayOutputStream();
 这两个一个是往内存里写入str字符串数据 一个是从内存中读取数据吧。。
 不过这两个有必要配合着一起使吗? 
我干嘛要先把他写入到内存中 在从内存中读取呢?
我直接       try{
      dis.write(str.getBytes());
      }catch (Exception e){
       e.printStackTrace();
      }不是也可以把数据写入进去吗? 还是我把概念弄混了。。望高手指点

解决方案 »

  1.   

    ByteArrayInputStream 没怎么用过
    ByteArrayOutputStream 可以在你需要循环从InputStream中读取字节数组时很有帮助
    比如
    for(xxx)
    {
            byte[] xx = new byte[100]
            is.read(100)//简写,每次读取100个给数组
             byteArrayOutputStream.write(xx);
    }
    然后出来之后整个输入流就转到byteArrayOutputStream,想要得到数组就toArray就很方便了
      

  2.   

    首先LZ你可以先看一下 JDK API文档,ByteArrayInputStream在构造的过程中就要求接收一个字节数组,IO包内的所有流都是继承自这四种抽象流类型(InputStream,OutputStream,Writer,Reader),按照不同的方式我们可以把他们分为以下3种流类型:1、按照数据流动的方向可以分为输入流、输出流。2、按照处理数据的单位不同可以分为字节流和字符流。3、按照处理的方式不同可以节点流和处理流,而ByteArrayInputSream、ByteArrayOutputStream是属于处理流(套在已有流上的流,相当于过滤器),两者可以不一起使用,但一般建议是一起使用,这样比较方便。LZ应该在用电驴吧,它是属于P2P的软件,如果每读写一个字节就访问我们的硬盘一次那对我们的硬盘损坏很大。ByteArrayInputSream是输入流你的告诉它从哪里读取数据吧!而ByteArrayOutputStream是输出流,你总得告诉它往哪里写吧?在构造的时候系统会默认分配一块内存空间。当我们要读取它那里面的数据时,可以通过它的toByteArray()方法得到分配的内存,这样我们的ByteArrayInputSream就刚好用上了。还有就是假设我们要从一个文件中读取数据,按照LZ的思想FileInputStream就可以了,当时如果文件中有中文的化,那么你读取出来的数据就是一个个?号,这时就可以为它套上FileReader,一个字符一个字符的读取。
      

  3.   

    你见过套着其他流的ByteArrayInputSream和ByteArrayOutputStream?
    说了一堆 搞了半天连最基本的都错了
      

  4.   


    import java.io.*;public class ByteArrayOutputStreamDemo01{
    public static void main(String args[])throws Exception{
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    out.write("我".getBytes());
    byte[]b = out.toByteArray();
    out.close();
    ByteArrayInputStream in = new ByteArrayInputStream(b);
    byte[]b2 = new byte[1024];
    int len = in.read(b2);
    String str = new String(b2,0,len);
    System.out.println(str); 
    in.close();
    }
    }
      

  5.   

    lz 那三句代码是哪来的,干嘛用的啊,是谁规定一定要那么用的么?如果只是为了把str的数据写到dis这个输出流中,那弄个bos有啥意义了? 不如你那一句代码搞定叻