我想从程序员的角度,最好是在 C# 或 Java 中,操作操作系统中的文件夹来做你想做的事情有多难,例如像 FTP 一样工作?
图片 http://www.jacks-log.de/wp-content/uploads/2011/02/Dropbox-Wurmloch-1.png
自从几年前我听说了 Dropbox,我一直想知道这样做涉及到什么?
我想从程序员的角度,最好是在 C# 或 Java 中,操作操作系统中的文件夹来做你想做的事情有多难,例如像 FTP 一样工作?
图片 http://www.jacks-log.de/wp-content/uploads/2011/02/Dropbox-Wurmloch-1.png
自从几年前我听说了 Dropbox,我一直想知道这样做涉及到什么?
特别是谈到 Dropbox,他们没有做任何棘手的事情 - 只是使用 Windows 用户模式 API 提供的机制监视一个常规文件夹。
不过,使用内核模式驱动程序可以做更强大、更有趣的事情。
您可以做的第一件事是创建一个虚拟磁盘并将其映射到该文件夹。这样,您的代码(在我们产品的帮助下,无论是内核模式还是用户模式)将能够处理所有操作系统对这个文件夹中文件的请求。该文件夹将不存在于磁盘上,但将是虚拟的。您可以即时从远程服务器中选择数据,将它们写入远程服务器等。特别是,您可以将远程 SFTP 服务器映射到文件夹(使用 FTP,事情会稍微复杂一些,因为 FTP 不支持部分上传)。一些云提供商完全按照我的描述进行 - 他们提供虚拟磁盘或虚拟文件夹,这是他们云服务的“门”,当您从此类虚拟文件夹或磁盘读取或写入数据时,数据会从/到云服务器。
接下来是在文件系统过滤器驱动程序的帮助下,您可以拥有一个真实的文件夹,但动态地提供文件内容。这就是一些文件夹加密器的工作方式(它们在将文件数据写入真实磁盘时对其进行加密,如果没有激活此加密器,您将从该文件夹中的文件中读取刚刚加密的“垃圾”)。
现在,使用文件系统过滤器驱动程序,您可以控制访问文件夹的人员和方式,即您可以对文件夹内容的访问进行细粒度控制(将其与加密相结合,您可以获得方便的数据保护机制)。