【发布时间】:2021-06-22 14:40:56
【问题描述】:
我正在开发一个 Spring Boot 应用程序,我需要将一个文件复制到远程机器上。
当我在 Windows 机器上运行该程序时,它运行良好。代码如下:
void copyImage(MultipartFile image, String name) {
name = name + "." + FileUtils.getExtension(image);
Path path = Paths.get("\\<remote-machine>\path\to\repository\" + name);
try {
Files.copy(image.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
// Handle exception here
}
}
正如预期的那样,当我在 Linux (Pop!_OS) 上运行该程序时,它无法运行。我相信传递给Paths.get() 的参数格式不正确,因为 Windows 和 Linux 对路径的处理方式不同。知道如何让这种方法在 Linux 上运行吗?
【问题讨论】:
-
\` is the windows path separator. Try/` 作为起点。另请注意,remote machine\path可能是一个非常具体的 windows 事物。含义:默认情况下,您无权访问远程系统的文件系统。您似乎正在使用某种机制来使远程文件系统在本地可用。所以,这真的不仅仅是“如何写下路径”。为了“只是一条路径”的工作,您需要可以使用远程 FS。 -
Linux 从不使用 \ 作为文件分隔符,也不使用 UNC 路径。您可能得到的最接近的结果是安装 CIFS 卷,例如support.zadarastorage.com/hc/en-us/articles/…
标签: java nio network-share