0

我想写一个应用程序。(如果可能,基于网络)将外部硬盘驱动器(已经分区并包含数据)复制到具有相同分区的类似硬盘驱动器 - 有没有人认为这可以通过 Java(Google App Engine?转换 Java 应用程序并在其中运行)网络环境?或者同样)

如果有人认为这在某种语言中是可能的,那么思考一下会非常有帮助!PS。我认为最大的限制之一是数据在从一个驱动器下载和上传到下一个驱动器之间的位置 - 例如,我需要建立一个临时驱动器。用户本地内部硬盘上的目录,传输外部的内容,而不是直接将数据移回新的外部的最终过程!

PS。我也知道我将使用的驱动器的品牌和尺寸。

4

3 回答 3

5

您不应该尝试在 web 应用程序中执行此操作,IMO。如果您在不受信任的 web 应用程序/小程序中执行此操作,您将被沙盒安全限制阻止。要求用户打开安全性让你的应用程序这样做太危险了……对他们来说。

批量文件复制最好使用本机操作系统工具完成。

于 2010-02-08T07:07:49.230 回答
1

好吧,理论上您可以在 Java 中将其作为 Java Applet 来实现。但是小程序必须签名并且用户必须批准小程序的安全限制。如果您尝试逐位复制,则复制同一操作系统的硬盘驱动器可能会出现问题。

如果您想要一点一点地复制 OS 光盘,则必须从外部 CDROM/USB 设备启动以进行复制,然后编写它的最佳语言是 C/C++。

如果您不是逐位复制,那么您可以只复制文件,即使使用带有 shell.scripting 对象的 JavaScript 也可以完成。

于 2010-02-08T07:30:41.837 回答
0

您没有指定所有要求,但(通常)您不能在 Web 应用程序中执行此操作,因为:

  • 您需要访问权限(好的,可能但是......)
  • 你需要速度
  • 数据在复制过程中发生变化?如果是,那么如何?如果文件被添加/删除,那么您需要在驱动器上注册一个观察者(这意味着具体的平台特定 API 回调 - 不太可能在任何 Web 语言中可用 - Java、PHP 等)以查看需要哪些文件在您扫描完添加/删除新文件的位置后复制。如果文件可以是“任何东西”并且在复制过程中被“随机”修改,那么你就有麻烦了。因为您可以复制处于不一致状态的文件。这种情况很少见,但它可能会发生。特别是如果您想镜像某种特殊的 HDD(例如主驱动器 - 上面有操作系统的驱动器)。

此外,当源磁盘上的文件发生变化时,还涉及其他技巧(不同的应用程序具有不同的存储引擎,它们在保存文件时具有不同的模式)。

如果磁盘被“冻结”,那么你就可以了。您可以进行简单的文件复制(但如果您需要复制文件属性、文件流等,也要小心)。

但如果没有,我建议你为这个任务购买一个现成的应用程序,比如这个

于 2010-02-08T07:34:01.353 回答