原本我们创建文件读取文件时,都有起明确的路径和文件名,
   但现在我的目的是,创建一个文件,但它只存在于缓存里,而实际的文件名和路径并不存在。
   
   比如,我从DB得到一个byte[],要转成一个文件对象(File),但是又不能存放在磁盘上。
   有没有什么办法????

解决方案 »

  1.   

    使用文件的话我觉得不太可能··使用DataOutputstream和DataInputstream吧··
      

  2.   

    如要你不往硬盘上存文件,为何还要创建文件对象呢,如果你只是想把数据读到内存中可以这么做//创建一个字节数组对象,这个对象可以当成一个内存缓存使用,可以往里面放字节进去
    ByteArrayOutputStream bos=new ByteArrayOutputStream();
    //通过write方法往里放数据
    bos.write("abc".getBytes());
    bos.write("efg".getBytes());
    //数据放好后可以用toByteArray得到所有数据组合成的一个字节数组
    System.out.println(new String(bos.toByteArray()));bos对象相当一个无限大的容器,你可以把任意多的数组放到里面,等你放好了之后就可以用其提供的toByteArray方法得到完整的字符数组
      

  3.   


    我其实是需要把,数据库中 byte[] 转换成一个文件,而且把这个文件作为MAIL的一个attached 文件,发出去? 但是由于数据安全,所以不能写在物理磁盘上。  
      

  4.   

    文件也只不过是个byte数组罢了.可以。直接需要的时候在输出流直接write这个byte数组就可以了。
      

  5.   


       我知道,文件通过java读取到内存中,要么是字符串,要么是一个流。但是,我java mail提供的attached方法,接收的都是File Object,可能是底层为了记录文件格式属性等,方便mail server客户端在收到带有attached的邮件时,还原成文件。    所以,我现在是要把从数据库中取出的一个byte[],在内存中构建成一个虚拟文件,在作为邮件的附件,通过java Mail 发送。     
      

  6.   


    实在不行就创建个隐藏的文件作为临时对象,mail出去后,再把这个文件删掉。
      

  7.   


    呵呵,有source code review