所以我试图用Files.copy()
复制一些文件,虽然它在Mac上工作正常,并且在Windows上复制文本文件,当我尝试复制二进制文件时,我只是得到错误:
java.nio.file.NoSuchFileException:C:\ path \ to \ file
我的功能是:
private void copyFiles()
{
ArrayList<String> temp = new ArrayList<>(); //This is set up outside the function
temp.add("file1");
temp.add("file2"); //etc
String AlphaSimFileName = "folderName"; //This is actually set outside the function
String currentDir = System.getProperty("user.dir");
Path baseAlphaName = Paths.get(currentDir, AlphaSimFileName);
Path baseDirectoryName = Paths.get(currentDir, name);
System.out.println(""+baseAlphaName.toString());
System.out.println(""+baseDirectoryName.toString());
// for (String l: MyFunctions.getFilesAsString()) //gives the list of files to copy.
for (String l: temp)
{
Path p1 = Paths.get(baseAlphaName.toString(), l);
Path p2 = Paths.get(baseDirectoryName.toString(), l);
try
{
Files.copy(p1, p2, StandardCopyOption.REPLACE_EXISTING);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
任何人都知道为什么会这样?
答案 0 :(得分:0)
首先尝试手动完成。使用Java对Windows的路径进行硬编码时,请使用\\而不是\。此外,文件扩展名可能会丢失。
答案 1 :(得分:0)
(代表OP发布)。
原因是Windows自动隐藏了文件扩展名,因此我尝试移动的文件(即没有扩展名)不存在。