【问题标题】:Copy multiple files from one folder to another将多个文件从一个文件夹复制到另一个文件夹
【发布时间】:2019-05-30 15:27:07
【问题描述】:

我正在尝试使用以下代码将多个文件从一个文件夹复制到另一个文件夹

val pathCorpus = Files.copy(
  Paths.get("src/main/resources/corpusDirectory/corpus.mallet"),
  Paths.get("src/main/resources/corpus.mallet"),
  StandardCopyOption.REPLACE_EXISTING
)

val pathInferencer = Files.copy(
  Paths.get("src/main/resources/corpusDirectory/inferencer"),
  Paths.get("src/main/resources/inferencer"),
  StandardCopyOption.REPLACE_EXISTING
)

因为我需要复制两个文件,所以我使用了两次Files.copy。 代码正在运行,但我相信应该有更好的方法来编写代码,比如递归复制文件。

【问题讨论】:

    标签: scala file-io


    【解决方案1】:

    我喜欢使用 bash

    import scala.sys.process.stringToProcess
    val copyFiles: String = s"cp -R src/main/resources/corpusDirectory/ src/main/resources/".!!
    

    你可以使用 bash cp:https://www.cyberciti.biz/faq/copy-command/

    【讨论】:

      【解决方案2】:

      您可以使用FileUtils.copyDirectory()

      val source = "C:/your/source";
      val srcDir = new File(source);
      
      val destination = "C:/your/destination";
      val destDir = new File(destination);
      
          FileUtils.copyDirectory(srcDir, destDir);
      

      谢谢,

      【讨论】:

      • 我尝试了 copyDirectory,但 scala 显示无法解析 copyDirectory。能否请您也建议导入包的名称
      【解决方案3】:

      better-files 支持通过source.copyTo(destination) 语法递归复制目录。这是一个工作示例

      import better.files._
      
      object Hello extends App {
        val source = file"/your/sourceDir"
        val destination = file"/your/destinationDir"
        source.copyTo(destination)
      }
      

      我们需要以下依赖的地方

      libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0"
      

      【讨论】: