Java 如何在Scala中将文件从一个文件夹移动到另一个文件夹

Java 如何在Scala中将文件从一个文件夹移动到另一个文件夹,java,scala,Java,Scala,我是斯卡拉的新手 我在谷歌上搜索了很多关于如何在Scala中移动文件的内容,但只找到了如何在Java中移动文件。我尝试使用Javaimport Java.io.File移动文件,同时使用以下两种方法: Files.move("FileA", "FileB", StandardCopyOption.REPLACE_EXISTING); Files.move("DirA", "DirB", StandardCopyOpt

我是斯卡拉的新手

我在谷歌上搜索了很多关于如何在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。替换现有的
StandardCopyOption。原子移动
应该可以工作,但不能将父目录直接移动到其子目录中

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

相反,您可能希望移动
public
->
tmp
->
public/images

请参阅my Github中的以下Scala代码:

您需要在主功能中指定源文件夹和目标文件夹:

    val src_path = "<SOURCE FOLDER>" // Give your source directory
    val tgt_path = "<TARGET FOLDER>" // Give your target directory
便于将文件从一个目录复制到另一个目录:

os.list(os.pwd/“public”).map(os.move.into(u,os.pwd/“pub2”))
java.io和java.nio库通常很难使用(尽管对于这个特定操作来说没有那么难看)。最好依靠os lib进行文件系统操作

os.move.into
接受两个参数:正在移动的文件和目标目录

$ mv public/ public/images
mv: cannot move ‘public/’ to a subdirectory of itself, ‘public/images’
此代码灵活且易于修改。您可以轻松地将其更新为仅移动具有特定文件扩展名的文件


有关如何使用os lib的更多信息,请参阅。

您猜它不起作用,还是不起作用?也许你应该试着给出完整的系统路径,是吗?此外,似乎很难将目录移动到其自身的子目录中,因此您可能需要循环公共目录中的文件,并将其移动到图像目录“我猜它不起作用”。别让我们猜。它以什么方式不起作用?