对于我的用例,我想在内存目录中存储一些文件很短的时间。实际上我在运行时编译源代码到.class
文件,加载并执行它们。干净的方法是创建一个虚拟目录,让编译器在那里创建.class文件。当然我可以使用临时目录,但我必须在编译之前清理它,我不知道我是否是唯一使用它的人等等。
那么,是不是可以在Java中创建一个虚拟的,在内存的意义上呢?
答案 0 :(得分:8)
在Java 6中,实际上不可能在Java应用程序中执行此类操作。您需要依靠OS平台来提供伪文件系统。
在Java 7中,NIO API已经扩展为提供允许您定义新文件系统的API;见FileSystemProvider
。
Apache Commons VFS是另一种选择,但它有一些特性可能会导致现有代码和(第三方)库出现问题:
VFS中的文件和目录使用网址命名,而不是File
个对象。因此,使用File
进行文件操作的代码将无效。
FileInputStream
,FileOutputStream
,FileReader
和FileWriter
出于同样的原因,无法与VFS配合使用。
答案 1 :(得分:2)
听起来你可以使用ramdisk。有很多应用程序会执行此操作,您使用的将取决于目标操作系统。我不知道任何支持此功能的 native Java API。
答案 2 :(得分:1)
我不确定这是否有用,但请检查Apache Commons VFS。
看来你需要的是内存文件系统。
答案 3 :(得分:0)