求 inputstream 的内容读到 byte数组中的代码

解决方案 »

  1.   

    FileInputStream fis
    fis.read(...)
    看下api,里面放个byte的数组接受保存数据
      

  2.   

    is.read(...) //我也知道用read可以实现
    问题是要知道大小,要预先定义byte数组的大小才行,好象inputsteam没有方法取大小的, 我就烦这个! 
      

  3.   

    to believefym
    据我所知,直接放一个byte数组是不行的,要知道大小才行. 请给一下完整的代码行吗?
      

  4.   

    不管用什么,总之输入一个inputstream 对象,返回一个byte数组即可! 
    java不能定义动态数组,这有点不方便. 我从其它语言转过来 ...
      

  5.   

    FileInputStream fis = new FileInputStream("H:\\我.txt");
    byte c[] = new byte[10];
    while(fis.read(c)!=-1){
    System.out.println(new String(c));
    }这里的byte数组有缓冲的作用
      

  6.   

    我是要这样的功能: 
    中间的代码谁会写呀??
    public static byte[] getBytesFromIS(InputStream is){
      ... //谁帮忙写一下这里的代码?
    }
      

  7.   

    原来要读到一个数组里
    用楼上的定义byte数组的大小,然后read进去
      

  8.   

    用LIST一个个的add,再转成数组
      

  9.   

    原来要读到一个数组里
    用楼上的定义byte数组的大小,然后read进去
    ================
    好象还没明白我想要什么, 你给的代码一次只能10个,我要的是返回全部! 用LIST一个个的add,再转成数组
    ==========================
    我也是这样想的,好象很麻烦!
      

  10.   

    奇怪了,这么简单的功能居然没人来回答,CSDN的高手去哪了?!自己贴出答案:
    public static byte[] readBytesFromIS(InputStream is) throws IOException{
    int total = is.available();
    byte[] bs = new byte[total];
    is.read(bs);
    return bs;
    }
      

  11.   

    关键是available() 可以取得InputStream 的大小,大家都只会说read()
      

  12.   

    如果InputStream里面的数据比较少,这样做简单明了,当然很好。但是,如果InputStream里的数据很多,几百M,甚至上G,用楼主的办法的处理的话,恐怕,就会出现OutOfMemory错误(不信可以试试)。另外,如果你操作的InputStream是Socket的InputStream,available()方法返回仅仅是当前Socket缓冲区中的字节数,不一定就是Socke对端发送给你的全部数据,等你read后,InputStream还会有别的数据,那么你还需要read一次,直到available()返回0或者-1,这其实还是一个循环。流的设计思想是处理动态的,数据个数不可预知的数据,它就像一个管道,你永远都无法知道这个管道会传来多少数据(FileInputStream是一个特例),因此,一般情况下,都是边read,边处理。
      

  13.   

    谢谢muymuy(muy)
    CSDN 的java版 就是太少 muymuy(muy) 这样的人呀,问了很多问题,很少人能给好的答案.但对于一般的情况,我只需要判断一下available() 有大小,如果不超过一定的长度我就用以上代码一次性读取了. 
    所以以上代码在很多情况下也是很有用的. 太大的时候分批读取就行了.
      

  14.   

    try
          {
             inputtextfile=new FileInputStream(path); 
             length = inputtextfile.available();
             System.out.println("Length :" + length+"KB");
             readHZK();
           }
          catch(IOException e)
          {
             System.out.println(e);
          }
      

  15.   

    byte [] b=byte[1024];
    FileInputStream fis=new FileInputStream("file.txt");
    int i=fis.read(b);
    System.out.println(new String(b,0,i));
      

  16.   

    用ByteArrayOutputStream     里面有个toByteArray
    相关查API
      

  17.   

    完整的如下
    import java.io.*;public class pageBean { public static void main(String[] args) {
    try {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    FileInputStream fis = new FileInputStream("c:\\test.xml");
    int b = 0;
    while ((b = fis.read()) != -1) {
    bos.write(b);
    }
    fis.close();
    byte[] t = bos.toByteArray();
    System.out.println(new String(t, "UTF8")); } catch (Exception e) {
    e.printStackTrace();
    } }
    }
      

  18.   

    用ByteArrayOutputStream     里面有个toByteArray
    =================================
    这个我知道! 但我要求的是inputstream, ByteArrayOutputStream 可以直接转换成inputstream, 但inputstream不可以直接转换成 ByteArrayOutputStream ! 
      

  19.   

    不好意思了
    eugenedj(今是昨非) 
    的回复早就提示到重心了,我没有注意,在这里要谢谢eugenedj了!
      

  20.   


    insiku 你给老子s h u t u p
    中国净什么那种人了
    不愿在中国待着 滚
      

  21.   

    public static byte[] read(String filename) throws IOException{
    File file=new File(filename);
    RandomAccessFile raf=new RandomAccessFile(file, "r");
    byte[] buf=new byte[(int) raf.length()];
    raf.read(buf);
    raf.close();
    return buf;
    }