我用Servlet做了一个文件上传组件,但是我想把各个文件保存在流里,可以向磁盘或数据库中写入。目前只有向磁盘写入。请问JAVA中没像C#中的内存流,可以把数据读入流中,又可以取出来,方便各种操作。

解决方案 »

  1.   

    上传的时候本来就是保存在流中的。
    servlet中request.getInputStream();这个就是文件的流。
    再将这个流写入文件,如:try{
      File file = new File("file");
      FileOutputStream out = new FileOutputStream(file);
      byte[] b = new byte[1024];
      while(in.read() != -1){
       out.write(b);
      }
    }catch(IOException e){
     out.close();
     in.close();
    }
      

  2.   

    分割过Servlet流,不能直接拿,现在流已经拿到,保存到磁盘没问题。但我要它保存在内存里
      

  3.   

    保存在内存里面。。楼主可有先考虑好了内存占用的问题,这个需求我没有碰过。
    c#的内存流我不知道怎么样。是不是也是一种机制缓存这些数据,要放到输出到文件的时候实际还是需要转化成文件流来操作的?java没见过类似你说的内存流。兴许是见识有限。
    我只能想到放在字节数组中,要输出到文件的时候再用一个文件流读这个数组。
      

  4.   

    内存中,就用reader啊.
    bufferedread,实例化的类.
    肯定在内存中啊.
      

  5.   

    可以使用ByteArrayInputStream/ByteArrayOutputStream先写入到一个字节数组中
    用的时候再从字节数组中读取出来
      

  6.   

    ByteArrayInputStream/ByteArrayOutputStream就行,不过如果是大文件不建议写到内存中,很耗资源
      

  7.   

    一般大文件都不会采用这种方式,不然你的服务器慢慢的就over了。