如何调用操作系统功能将文件复制到文件夹?

如何调用操作系统功能将文件复制到文件夹?

问题描述:

我是一个Java应用程序,我需要同步两个用户选择的目录,源和目标(简单的本地机器应用程序,不需要考虑任何文件系统或服务器的东西和什么)的内容。应用程序应将任何新的和已更改的文件从源文件复制到目标文件,并删除不在源文件但在目标文件中的文件。同步过程需要显示进度条并且可以取消。如何调用操作系统功能将文件复制到文件夹?

删除部分我想我必须完全写,但其他行为是相同的操作系统功能复制文件从一个目录到另一个,所以我可以保存自己很多工作,通过使用已经存在的功能。问题是,我不知道如何从Java访问它。

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

+0

您可以运行'rsync'将使用的Runtime.exec() –

+0

要获得OS做到这一点两台机器之间甚至工作,你需要找到合适的命令行工具来做到这一点。 –

您可以使用Java的WatchService来查看目录以了解更改。由于您正在使用两个目录,因此您需要同时观察这两个目录的更改。

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

尝试与本地操作系统调用进行通信将很困难,如果可能的话,取决于平台。此外,您需要知道操作系统是否真的将这些功能暴露给非OS代码。

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

/约恩