Is there a simple "virtual file" class for .NET (c# if source is available)?

10.4k views Asked by At

For a long time, I've been looking for a class in .NET that has functionality that makes it so that the operating system thinks there is a file (or directory, or both, etc) at a particular location - but all hooks are passed to a function (or event?) in code.

Example:

If I browse to "x:\fake_directory\" I will see a file there, "fake_file.txt". If I double click on the file, Notepad.exe will launch and the file contents would say "Hello World". "Hello World" would come from my c# code.

Example of what I hope the class can do (maybe this will explain it better):

VirtualFile.Register("c:\my_file.txt",
    delegate { return Encoding.Ascii.GetBytes("Hello World"); });

That's, of course, a simplified version of what I'm looking for... but hopefully you get the idea.

The reason why this is 100% needed is to work with legacy code or proprietary (and very old legacy garbage) systems that require reading and writing to the file system to communicate.

2

There are 2 answers

1
Simon Smeets On BEST ANSWER

I believe Dokan would fit your needs for a virtual file system library. Dokan is written in c++ but there is a .NET library to interact.

Dokan link

On the other hand, i believe IPC would be better to achieve the needed functionality for which you gave an example in the comments.

2
Eugene Mayevski 'Callback On

Depending on whether your data is static or generated on the fly, you will find either Callback File System or Solid File System OS Edition suitable for your needs (both are our products). SolFS is a ready to use virtual file system with built-in container. Callback File System is a virtual file system without container (you provide structure and data on the fly).