我的要求是这样的,我没有物理上位于我的驱动器上的目标文件来写入输出流。那么,是否可以在缓存中创建一个文件?使用Java。
答案 0 :(得分:0)
我怀疑你想要的是ByteArrayOutputStream,它允许你写入内存中的流而不是写入磁盘。
如果你指的是CPU或磁盘缓存,你能说出原因,以及你想要实现的目标吗?
答案 1 :(得分:0)
缓存不是程序可访问的,它使用替换策略来存储处理器本地的数据,以减少从内存中相对昂贵的提取次数。
我怀疑你真的想要写入内存,在linux环境下你可以使用共享内存/dev/shm
来做这件事,它是已经映射到文件系统的系统内存的一部分。有关如何将其与java.nio.channels.FileChannel
结合使用的示例,请查看this code
答案 2 :(得分:0)
如果您正在考虑内存映射文件,请尝试使用
//: c12:LargeMappedFiles.java
// Creating a very large file using mapping.
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class LargeMappedFiles {
static int length = 0x8FFFFFF; // 128 Mb
public static void main(String[] args) throws Exception {
MappedByteBuffer out =
new RandomAccessFile("test.dat", "rw").getChannel()
.map(FileChannel.MapMode.READ_WRITE, 0, length);
for(int i = 0; i < length; i++)
out.put((byte)'x');
System.out.println("Finished writing");
for(int i = length/2; i < length/2 + 6; i++)
System.out.print((char)out.get(i));
}
} ///:~
样本来自here
答案 3 :(得分:0)
File.createTempFile();