簡體   English   中英

如何在 Scala 中將文件/文件從一個文件夾移動到另一個文件夾

[英]How to move file/files from one folder to another in Scala

我是 Scala 的新手。

我在谷歌上搜索了很多關於如何在 Scala 中移動文件的信息,但只找到了如何在 Java 中移動文件。 我嘗試使用 Java import Java.io.File移動文件,同時使用:

Files.move("FileA", "FileB", StandardCopyOption.REPLACE_EXISTING);
Files.move("DirA", "DirB", StandardCopyOption.ATOMIC_MOVE); 

但它沒有用。 我的代碼如下所示:

Files.move("/public", "/public/images", StandardCopyOption.ATOMIC_MOVE);

我想將文件從public移動到public/images

根據我對你的問題的理解,
您正在嘗試將String變量而不是java.nio.Path變量傳遞給Files.move()

以下方法有效:

import java.io.File
import java.nio.file.{Files, Path, StandardCopyOption}

val d1 = new File("/abcd").toPath
val d2 = new File("/efgh").toPath

Files.move(d1, d2, StandardCopyOption.ATOMIC_MOVE)

但是,我在您的代碼中看到了另一個問題。 StandardCopyOption.REPLACE_EXISTINGStandardCopyOption.ATOMIC_MOVE都應該可以工作,但是,您不能將父目錄直接移動到它的子目錄中。

$ mv public/ public/images
mv: cannot move ‘public/’ to a subdirectory of itself, ‘public/images’

相反,您可能想要移動public -> tmp -> public/images

請參閱我的 Github 中的以下 Scala 代碼: https : //github.com/saghircse/SelfStudyNote/blob/master/Scala/MoveRenameFiles.scala

您需要在 main 函數中指定源文件夾和目標文件夾:

    val src_path = "<SOURCE FOLDER>" // Give your source directory
    val tgt_path = "<TARGET FOLDER>" // Give your target directory

它還重命名文件。 如果您不想重命名文件,則更新如下:

val FileList=getListOfFiles(src_path)
FileList.foreach{f => 
  val src_file = f.toString()

  //val tgt_file = tgt_path + "/" + getFileNameWithTS(f.getName) // If you want to rename files in target
  val tgt_file = tgt_path + "/" + f.getName // If you do not want to rename files in target

  copyRenameFile(src_file,tgt_file)
  //moveRenameFile(src_file,tgt_file) - Try this if you want to delete source file
  println("File Copied : " + tgt_file)
}

os-lib可以輕松地將文件從一個目錄復制到另一個目錄:

os.list(os.pwd/"public").map(os.move.into(_, os.pwd/"pub2"))

java.io 和 java.nio 庫通常很難使用(盡管對於這個特定的操作來說並不是那么難看)。 最好依賴 os-lib 進行文件系統操作。

os.move.into有兩個參數:被移動的文件和目標目錄。

此代碼靈活且易於修改。 您可以輕松地將其更新為僅移動具有特定文件擴展名的文件。

有關如何使用 os-lib 的更多信息,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM