如何在Windows上使用Java创建虚拟磁盘(字母,共享等)?

问题描述:

我正在考虑尝试一个类的项目和作为它的一部分,我将需要创建一个“磁盘”,以允许用户写一些文件(例如RAM磁盘)。我使用过各种语言,但我最熟悉Java(我可以使用C#并及时完成它)。我想知道可以做到这一点的是什么。如何在Windows上使用Java创建虚拟磁盘(字母,共享等)?

我看过Commons VFS,JLAN和Alfresco,我可能可以使用后两种,但我想知道是否有其他选项。现在,我正在研究Java 7,它阅读了新的I/O,这可能会有所帮助......真的,我现在需要弄清楚的主要事情是绘制驱动器的方法。例如,AFAICT,Commons VFS会让我访问某个地方的文件(比如FTP),但是如何将这个访问作为驱动器盘符或者共享映射到这个映射中?

感谢

更新:更清楚,我想要做的(一般)为创造这样的Dropbox。我想在Windows中有一个驱动器盘符/共享,但是后端将是本地磁盘以外的东西(例如运行服务器组件的LAN上的另一台计算机)。我需要至少编写后端逻辑来传输数据,但我不确定如何将它“粘合”到Windows中,以使它看起来像是磁盘或网络共享......似乎使用某种CIFS服务和将其暴露给操作系统可能是最有意义的。

在纯Java,您将不能创建一个客户端应用程序,但必须创建讲的东西的Windows已经知道如何安装(CIFSWeb DAV例如)服务器应用程序。 WebDAV可能是最简单的工作。

现在你在你的文章中提到了Dropbox。 Dropbox我不相信实际上会创建一个虚拟驱动器或文件夹,而是将内容复制到本地文件夹,并且监视器会说明文件夹的更改。如果选择该路由,那么Java有一个WatchService来处理它(完成tutorial)。您将不得不编写客户端和服务器端组件,但您的文件在离线时可用。

你可以试试微软自己的RAM磁盘驱动器,它是否仍然适用于当前的Windows版本:http://support.microsoft.com/kb/257405

或者,如果你只需要一个驱动器号,请尝试subst命令。

如果您确实需要编写一个解决方案,我能想到的最简单的方法是创建一个文件,在其中模拟您自己的简单文件系统(记录存储)并提供一些用户可以管理文件的界面。即一个虚拟文件系统。

我不知道当前的Windows版本是否具有与OS X的磁盘映像相同的功能,这将简化您的工作。

这是有点不清楚你实际上需要做什么。

您可以使用我们的Callback File System产品来创建一个虚拟文件系统,并通过NTFS磁盘上的驱动器盘符或文件夹将其公开。文件系统操作将由您的代码处理,您将能够将数据传输到云端。这是几十个客户使用的场景。