簡體   English   中英

使用java.nio在內存中寫入文件?

[英]write file in memory with java.nio?

使用nio,可以將現有文件映射到內存中。 但是有可能只在內存中創建它而沒有硬盤上的文件嗎?

我想模仿CreateFileMapping窗口函數,它允許你在內存中寫入。

Java中是否有等效的系統?

目標是在內存中寫入以便另一個程序(c)讀取它。

看看下面的內容。 創建了一個文件,但這可能與您要獲得的文件一樣接近。

MappedByteBuffer
MappedByteBuffer.load()
FileChannel
FileChannel.map()

這是一個嘗試讓你入門的片段。

    filePipe = new File(tempDirectory, namedPipe.getName() + ".pipe");
    try {
        int pipeSize = 4096;
        randomAccessFile = new RandomAccessFile(filePipe, "rw");
        fileChannel = randomAccessFile.getChannel();
        mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, pipeSize);
        mappedByteBuffer.load();
    } catch (Exception e) {
    ...

根據定義,磁盤上存在一個文件。 你的問題體現了矛盾。

Java中的大多數庫處理輸入輸出流而不是java.io.File對象。
示例: 圖像閱讀XML音頻zip

在可能的情況下,在處理I / O時,請使用流。

但是,如果您需要隨機訪問數據,這可能不是您想要的。

使用內存映射文件時,使用FileChannel.map()FileChannel獲取MappedByteBuffer ,如果不需要文件,只需使用ByteBuffer ,它完全存在於內存中。 使用ByteBuffer.allocate()ByteBuffer.allocateDirect()創建其中一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM