请问各位大侠,java能否在内存里读写文件
具体就是一个文件,写到内存(不保存到硬盘),然后再读取。

解决方案 »

  1.   

    http://topic.csdn.net/u/20070415/07/a5f4178f-c96d-4a7b-aac0-9ec324ae0a1c.html
    和你的要求类似
      

  2.   

    不知道楼主想干什么,既然是读写文件就是文件操作了.
    如果要在内存操作,就先把文件里的内容变成String或者btye数组,然后你想怎么弄就怎么弄和文件就没关系了.之所以要用文件流是因为怕文件太大,内存不够.
      

  3.   

    nio   内存映射文件
      

  4.   


    应为我想把页面上显示的一些数据保存在excel里,但是不写到硬盘
      

  5.   

    FileInputStream fis = new FileInputStream(f);
    FileChannel fc = fis.getChannel(); // Get the file's size and then map it into memory
    int sz = (int)fc.size();
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
    通过nio中的类就行了
      

  6.   

    内存映射并不是把文件数据全部读入内存,只是分页技术。这是操作系统的模式,JAVA用自己的机制实现了这个模式的,但是还是受到系统的制约。
    小文件可以完全读入后操作,大文件,只能NIO
      

  7.   

    ServletOutputStream out = response.getOutputStream();
    WritableWorkbook wwb =  Workbook.createWorkbook(out);这个是将excel写到内存中后直接返回给客户端给用户下载!
    不知道你是不是要这个!数据量大的话还是建议已文件的形式!
      

  8.   

    response.setHeader("pragma", "no-cache");
    response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes("GBK"), "ISO8859_1"));
    response.setContentType("application/*");最后还要加上这个!
      

  9.   

    只不是想产生临时文件,而实际操作时是往某上地方写的。等全部写完了再一次发给其它流,
    用ByteArrayOutputStream是最合适的。
      

  10.   


    既然都保存在 Excel 里了,还不写硬盘啊?
      

  11.   

    比如生成多媒体文件,多个文件进行编码,编码一点,写入一点,最后形成一个大的多媒体文件。写好后,再把这个文件输出去,现在楼主不想在硬盘上产生这个文件,因为发送到客户端后还要删除,并且临时文件命名,在多线程中是否会命名冲突等,所以直接在内存中操作。ByteArrayOutputStream 生成一个out,你直接往里写(前题是不能太大超过JVM能分配的内存),写完后直接转换成byte[],或和一个ByteArrayInputStreamr挂接从里读再往客户端发送。
      

  12.   

    楼主看来根本没了解什么叫做数据。
    从java的角度去思考数据,任何数据都是byte数组,你存放在内存中是byte,存放在硬盘里面也是byte,什么inputStream,什么outputStream不过是对这些byte类型进行转移或者处理,充其量就是把内存中的这些byte存放到硬盘中又或者吧硬盘中的byte存放在内存中。
      

  13.   

    生成的 Excel 文件,并不一定要存到 File 里面去啊,可以写入 ByteArrayOutputStream 存成一个 byte 数组import java.io.ByteArrayOutputStream;
    import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRichTextString;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class HssfTest {    public static void main(String[] args) {
            HSSFWorkbook hssf = new HSSFWorkbook();
            HSSFSheet sheet = hssf.createSheet("你好");
            for(int i = 0; i < 10; i++) {
                HSSFRow row = sheet.createRow(i);
                for(int j = 0; j < 10; j++) {
                    HSSFCell cell = row.createCell(j);
                    HSSFRichTextString str = new HSSFRichTextString(i + ", " + j);
                    cell.setCellValue(str);
                }
            }
            ByteArrayOutputStream os = null;
            try {
                os = new ByteArrayOutputStream();
                hssf.write(os);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            byte[] bys = os.toByteArray();
        }
    }
      

  14.   

    操作系统提供了映射文件等,不记得java是否提供了封装。
      

  15.   

    WEB工程?放到SESSION里好了,什么时用什么时取,
    你机器可要好。
      

  16.   

    字节的:ByteArrayOutputStream.
    字符的:CharArrayWriter