拆分为|&引用;并读取文件名和路径以复制JAVA

拆分为|&引用;并读取文件名和路径以复制JAVA,java,file,split,Java,File,Split,我有一个文本文件,看起来像fileName | path。 我读取文本文件并在处拆分它。 现在我想使用文件名和路径将文件从一个目录复制到另一个目录 以下是我到目前为止得到的结果,结果如下: file to be copied: test.jar to path: c:/test c:\InstallFiles\test.jar c:\test c:\test 这是我的密码: String record = ""; FileReader fileReader = null;

我有一个文本文件,看起来像
fileName | path
。 我读取文本文件并在
处拆分它。 现在我想使用文件名和路径将文件从一个目录复制到另一个目录

以下是我到目前为止得到的结果,结果如下:

file to be copied: test.jar to path: c:/test
c:\InstallFiles\test.jar
c:\test
c:\test
这是我的密码:

    String record = "";
    FileReader fileReader = null;
    String curDir = System.getProperty("user.dir");
    File file = new File(curDir + "/InstallFiles.txt");
    File installFiles = new File("c:/InstallFiles");
    File[] files = installFiles.listFiles();
    try {
        fileReader = new FileReader(file);
        BufferedReader myInput = new BufferedReader(fileReader);
        while ((record = myInput.readLine()) != null) {
            String[] recordColumns = record.split("\\|");

            String fileName = recordColumns[0].toString().trim();
            String path = recordColumns[1].toString().trim();

            System.out.println("file to be copied: " + fileName + " to path: " + path);
            Path source = Paths.get(installFiles +"/"+ fileName);
            System.out.println(source);
            Path target = Paths.get(path);
            System.out.println(target);
            Files.copy(source, target);
            System.out.println("Copied file: " + fileName + " to " + path);
        }
        myInput.close();
        fileReader.close();
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

很可能会抛出某种形式的
IOException
。从你提供的信息我说不出原因

我建议您将
catch
块中的代码更改为:

} catch (Exception e) {
    e.printStackTrace();
}
这可能会提供有关错误发生原因的更好信息


编辑:


关于出现问题的原因,一个可能的猜测是目标文件(
c:\test
)已经存在。根据,这将导致您获得一个
filereadyexistException
,除非您指定了一个
REPLACE\u EXISTING
选项,而您尚未指定该选项

你的问题是什么?另外,为什么要对
字符串调用
toString()
?这有什么问题?它不会将文件从InstallFiles文件夹复制到test folderString fileName=recordColumns[0]。toString().trim();如果我不执行toString,它只返回列的值,例如1或2或3@user1794974:
recordColumns
是一个
String[]
,因此
recordColumns[0].toString().trim()将始终与记录列[0]相同