使用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()创建其中一个。