[英]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.