我是Scala的新手。
我google了很多,但只发现了如何用Java移动文件。我尝试使用Java import Java.io.File
并使用两个文件.move(" FileA"," FileB",StandardCopyOption.REPLACE_EXISTING); 和Files.move(" DirA"," DirB",StandardCopyOption.ATOMIC_MOVE);
但它没有用。我的代码看起来像这样:
Files.move(" / public"," / public / images",StandardCopyOption.ATOMIC_MOVE);
我想将文件从public
移至public/images
答案 0 :(得分:5)
根据我对您的问题的理解,您试图将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_EXISTING
和StandardCopyOption.ATOMIC_MOVE
都应该可以工作,但是你不能将父目录直接移动到它的子目录中。
$ mv public/ public/images
mv: cannot move ‘public/’ to a subdirectory of itself, ‘public/images’
相反,您可能想要移动public
- > tmp
- > public/images
答案 1 :(得分:1)
请从我的Github中引用以下Scala代码:https://github.com/saghircse/SelfStudyNote/blob/master/Scala/MoveRenameFiles.scala
您需要在主要功能中指定您的源文件夹和目标文件夹:
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)
}
答案 2 :(得分:0)