4

For my usecase, I would like to have an in memory directory to store some files for a very short time. Actually I compile source code to .class files at runtime, classload and execute them. The clean way would be to create a virtual directory and let the compiler create .class files there. Of course I could use a temp directory, but I have to clean it before compiling, I don't know if I'm the only one using it, etc.

So, is and how is it possible to create a virtual, in the meaning of in memory, directory in Java?

Jørgen R
  • 9,997
  • 7
  • 40
  • 58
Stefan K.
  • 7,429
  • 6
  • 47
  • 61

4 Answers4

8

In Java 6 it is not really possible to do this kind of thing within a Java application. You need to rely on the OS platform to provide the the pseudo-filesystem.

In Java 7, the NIO APIs have been extended to provide an API that allows you to define new file systems; see FileSystemProvider.

Apache Commons VFS is another option, but it has a couple of characteristics that may cause problems for existing code and (3rd-party) libraries:

  • Files and directories in VFS are named using urls, not File objects. So code that uses File for file manipulation won't work.

  • FileInputStream, FileOutputStream, FileReader and FileWriter won't work with VFS for much the same reason.

Community
  • 1
  • 1
Stephen C
  • 669,072
  • 92
  • 771
  • 1,162
2

It sounds like you could use a ramdisk. There are many apps out there that will do this, what you use would depend on the target OS. I don't know of any native Java API that supports this.

Unsigned
  • 9,263
  • 4
  • 45
  • 68
1

I am not sure if this is helpful or not, but do check Apache Commons VFS.

It seems that what you need is memory filesystem.

Stephen C
  • 669,072
  • 92
  • 771
  • 1,162
Gilbeg
  • 681
  • 2
  • 9
  • 19
0

For Java7's NIO there are

koppor
  • 17,003
  • 14
  • 105
  • 150