【问题标题】:Copy data from one csv file to another csv file using java使用java将数据从一个csv文件复制到另一个csv文件
【发布时间】:2018-09-29 19:30:06
【问题描述】:
我正在编写 Java 代码以将数据从一个 csv 文件复制到另一个 csv 文件中。
要求是必须将在特定路径中上传的文件(多个文件)一次复制一个到另一个位置的另一个 csv 文件(例如 tag.csv)中。稍后将提取 tag.csv通过 shell 脚本连接到 Oracle DB 以运行存储过程。所有这些都重复完成,直到处理完所有上传的文件并分别为每个文件触发 shell 脚本。
现在我陷入了复制 csv 数据的困境。
我尝试过使用缓冲读取器、文件写入器等,但我无法将数据复制到 tag.csv,但我可以读取它们。
由于我是 java 新手,我很难理解我哪里出错了。
非常感谢您的帮助。
【问题讨论】:
标签:
java
csv
filereader
filewriter
opencsv
【解决方案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;
}