使用java复制文件。FileUtils.copyFiles与os cmd copy?

使用java复制文件。FileUtils.copyFiles与os cmd copy?,java,Java,我很好奇,是使用Process executor复制文件更好,还是使用Java复制方法更好。使您的程序在功能上尽可能可移植 如果使用cmd copy,则必须测试平台并针对每个平台进行处理。如果您使用cmd copy,您甚至可能无法覆盖所有平台。您必须处理不同平台的不同复制过程背后的所有微妙之处。您需要知道每个这样的过程应该如何使用,参数应该如何传递,以及所有这些 所以,我想说你应该使用文件utils。因为,您的功能将更加可移植 使您的程序在功能方面尽可能可移植 如果使用cmd copy,则必须测

我很好奇,是使用Process executor复制文件更好,还是使用Java复制方法更好。

使您的程序在功能上尽可能可移植

如果使用
cmd copy
,则必须测试平台并针对每个平台进行处理。如果您使用
cmd copy
,您甚至可能无法覆盖所有平台。您必须处理不同
平台
的不同
复制
过程背后的所有微妙之处。您需要知道每个这样的过程应该如何使用,参数应该如何传递,以及所有这些


所以,我想说你应该使用
文件utils
。因为,您的功能将更加可移植

使您的程序在功能方面尽可能可移植

如果使用
cmd copy
,则必须测试平台并针对每个平台进行处理。如果您使用
cmd copy
,您甚至可能无法覆盖所有平台。您必须处理不同
平台
的不同
复制
过程背后的所有微妙之处。您需要知道每个这样的过程应该如何使用,参数应该如何传递,以及所有这些


所以,我想说你应该使用
文件utils
。因为,您的功能将更加可移植

最好使用java复制方法,就好像你改变了平台,而不是你的代码能够工作一样。

最好使用java复制方法,就好像你改变了平台,而不是你的代码能够工作一样。

如果你已经有一个java程序,并且你想从该java程序中复制文件,你一定要使用FileUtils

  • 您可以更好地控制复制过程,如检查路径有效性和其他内容。如果调用外部命令来执行此操作,则会增加错误检查的额外开销,这种方式会变得更加复杂
  • 此外,如果您的程序在其他平台上使用,它可能会突然不起作用,因为您不知道如何在那里调用本机复制命令。您必须为每个不同支持的平台提供单独的解决方案,这在某种程度上违背了使用Java的目的
  • 调用外部进程的成本更高,速度也更慢。毕竟,操作系统必须创建一个新进程,并执行与之相关的所有任务,此外,还必须检查所有可能的错误情况。命令不在您认为的位置,命令不执行,不同版本的行为略有不同。如何检查它是否有效?等等

  • 如果您已经有一个java程序,并且希望从该java程序中复制文件,那么您肯定应该使用FileUtils

  • 您可以更好地控制复制过程,如检查路径有效性和其他内容。如果调用外部命令来执行此操作,则会增加错误检查的额外开销,这种方式会变得更加复杂
  • 此外,如果您的程序在其他平台上使用,它可能会突然不起作用,因为您不知道如何在那里调用本机复制命令。您必须为每个不同支持的平台提供单独的解决方案,这在某种程度上违背了使用Java的目的
  • 调用外部进程的成本更高,速度也更慢。毕竟,操作系统必须创建一个新进程,并执行与之相关的所有任务,此外,还必须检查所有可能的错误情况。命令不在您认为的位置,命令不执行,不同版本的行为略有不同。如何检查它是否有效?等等

  • 出于其他人所说的可移植性原因,我倾向于使用Java复制方法,但我认为这也会简化代码中的错误处理

    <> P>我认为使用OS命令的唯一原因是,如果应用程序的“强>主/强/强”功能是复制文件,OS和java实现之间有很大的性能差异。
    如果复制文件只是应用程序的一小部分,那么就选择Java。

    出于其他人所述的可移植性原因,我会选择使用Java复制方法,但我认为这也会简化代码中的错误处理

    <> P>我认为使用OS命令的唯一原因是,如果应用程序的“强>主/强/强”功能是复制文件,OS和java实现之间有很大的性能差异。
    如果复制文件只是应用程序的一小部分,那么选择Java。

    为什么要为一些可以内联执行的操作创建新的进程?OS命令可能是特定于操作系统的。定义“更好”。如果您想要性能,几乎可以肯定OS命令会更快。如果您想要可移植性,OS命令不符合要求。这不是一个真正的问题。为什么要为可以内联执行的操作创建新的进程?OS命令可能是特定于OS的。定义“更好”。如果您想要性能,几乎可以肯定OS命令会更快。如果您想要可移植性,OS命令不符合要求。这不是一个真正的问题。在java 1.5之前,没有文件复制方法…@AlexWien嗯,是的。。已编辑…检查文件副本是否可能在以后引入,java 7?@AlexWien请直接告诉我你的观点…问题是java引入文件副本的时间很晚,我没有时间找出哪一个是第一个版本。FileUtils是一个外部库(Appache.commons),在Java 1.7之前,在Java 1.5之前,没有文件复制方法……@AlexWien是的。。已编辑…检查文件副本是否可能在以后引入,java 7?@AlexWien请直接告诉我你的观点…问题是java引入文件副本的时间很晚,我没有时间找出哪一个是第一个版本。FileUtils是一个外部库(Appache.commons),而