我目前正在创build一个备份应用程序,我们需要一种方法来读取其他应用程序正在使用的文件,同时我们也希望尽量减less我们对用户文件的locking。 使用Window的卷影复制服务似乎是完美的方式。
然而,我们的问题是我们正在使用Java。 是否有任何简单的方法来实现这个(无论是使用一些库,甚至可能是一些CLI)?
我之前做过。
我们发现的最简单的方法是构建4个版本的vshadow.exe (用于从Microsoft网站快速启动VSS的演示工具):针对XP / later和x86 / x64中的每个目标平台。 VShadow基本上允许创建或销毁快照并检索如下所示的路径:
\?GLOBALROOTDeviceHarddiskVolumeShadowcopyXX ,您可以使用它替换与JAVA File API一起使用的驱动器盘符(例如D: \?GLOBALROOTDeviceHarddiskVolumeShadowcopyXX 。 VSS SDK的VShadow版本是可读写的,与可以直接下载的exe版本不同,只读。
然后,在Java中,使用统一接口编写两个CLI封装器(用于处理XP和更高版本之间的VShadow的两种不同行为)很容易。
祝你好运。
所以,我不太了解VSS,但是从Java访问Windows本机API的方面,我会检查出JNA。 您可能会发现有人已经将相关API定义移植到JNA。
嗯…通过Java做它可能会非常棘手,非常容易出错
一个简单的方法就是编写一个小的本机DLL,它可以做VSS使用VSS API所要做的事情
然后使用C#pInvoke或C ++ / CLI …然后您可以使用任何其他CLI兼容的语言
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。