Files.copy无法识别Windows上的二进制文件(Java)

时间:2016-07-20 14:02:34

标签: java windows file-io

所以我试图用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();
        }
    }
}

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

首先尝试手动完成。使用Java对Windows的路径进行硬编码时,请使用\\而不是\。此外,文件扩展名可能会丢失。

答案 1 :(得分:0)

(代表OP发布)

原因是Windows自动隐藏了文件扩展名,因此我尝试移动的文件(即没有扩展名)不存在。