【问题标题】:How to call the OS functionality to copy over files to a folder?如何调用操作系统功能将文件复制到文件夹?
【发布时间】:2016-02-29 13:15:29
【问题描述】:

我是一个 Java 应用程序,我需要同步两个用户选择的目录的内容,Source 和 Target(简单的本地机器应用程序,无需考虑任何文件系统或服务器的东西等等)。应用程序应将任何新的和更改的文件从 Source 复制到 Target,并删除不在 Source 中但在 Target 中的所有文件。同步过程需要显示进度条并且可以取消。

删除部分我想我必须完全编写,但其他行为与将文件从一个目录复制到另一个目录的操作系统功能相同,因此我可以通过使用该功能为自己节省大量工作那已经在那里了。问题是,我不知道如何从 Java 访问它。

那么,如果您选择一些文件并将它们拖到文件夹图标上,我如何让 Java 执行与大多数操作系统相同的操作?

【问题讨论】:

  • 你可以运行rsync,它甚至可以在两台机器之间使用 Runtime.exec()
  • 要让操作系统执行此操作,您需要找到相应的命令行工具来执行此操作。

标签: java operating-system copy


【解决方案1】:

您可以使用 Java 的 WatchService 来监视目录的更改。由于您使用的是两个目录,因此您需要同时观察这两个目录的变化。

对于进度条和拖放,您需要JavaFX 或 Swing。

尝试与本机操作系统调用进行通信会很困难,并且如果可能的话,还依赖于平台。此外,您需要知道操作系统是否真的将这些功能公开给非操作系统代码。

【讨论】:

    【解决方案2】:

    Apache fileutils 确实有很多方便的方法来处理复制文件。检查此线程 Progress bar with Apache FileUtils.copyDirectory(...) 以获得一些灵感

    /比约恩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 2012-06-25
      • 1970-01-01
      • 2015-03-28
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多