使用java将数据从一个csv文件复制到另一个csv文件

时间:2018-04-19 10:20:34

标签: java csv filereader filewriter opencsv

我正在研究Java代码,将数据从一个csv文件复制到另一个csv文件中。

要求是在特定路径中上传的文件(多个文件)必须一次一个地复制到另一个位置的另一个csv文件(比如tag.cs​​v)。后面的tag.cs​​v将被拾取通过shell脚本连接到Oracle DB以运行存储过程。所有这些都会重复执行,直到处理完所有上载的文件并分别为每个文件触发shell脚本。

现在我陷入了复制csv数据的困境。 我曾尝试使用缓冲读取器,文件写入器等,但我无法将数据复制到tag.cs​​v,但我可以阅读它们。

因为我是java新手,我很难理解我哪里出错了。 非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您只需使用Java 7 NIO2:

例如:
如果要将文件从一个位置复制到另一个位置,只需调用:

Files.copy(fromPath, toPath);

如果你想搬家:

Files.move(fromPath, toPath);

使用Java 7功能,您不需要为文件处理编写硬代码。希望有所帮助。

Java 7 NIO2 Tutorial Link

<强>编辑:
但是您的要求不是文件复制,而是要将上载的文件内容写入现有文件,您也可以简单地使用Java 7 NIO2功能。

例如

private static void writeFileAsAppend() throws IOException {
        List<String> lines = readFileAsSequencesOfLines();
        Path path = getWriteFilePath();         
        Files.write(path, lines, StandardOpenOption.APPEND);
}

private static List<String> readFileAsSequencesOfLines() throws IOException {
        Path path = getReadFilePath();          
        List<String> lines = Files.readAllLines(path);    
        return lines;
}

private static Path getReadFilePath() {
        Path path = Paths
                .get(".\\ReadMe.csv");    
        return path.normalize();
}

private static Path getWriteFilePath() {
        Path path = Paths
                .get(".\\WriteMe.csv");    
        return path;
}