用于使用java合并文件的Linux命令无效
我正在尝试使用java程序执行terminal命令来合并两个.csv文件,我的命令在terminal上运行良好,但在java中运行不正常 下面是我的代码:用于使用java合并文件的Linux命令无效,java,linux,Java,Linux,我正在尝试使用java程序执行terminal命令来合并两个.csv文件,我的命令在terminal上运行良好,但在java中运行不正常 下面是我的代码: String command = "awk 'FNR==1 && NR!=1{next;}{print}' /opt/test/*.csv >> /opt/test/output.csv"; Process proc; int exitStatus; while (true) {
String command = "awk 'FNR==1 && NR!=1{next;}{print}' /opt/test/*.csv >> /opt/test/output.csv";
Process proc;
int exitStatus;
while (true) {
try {
proc = Runtime.getRuntime().exec(command);
exitStatus = proc.waitFor();
break;
} catch (java.lang.InterruptedException e) {
System.out.println("inside exception" + e.getMessage());
}
}
if (exitStatus != 0) {
System.out.println("Problem occured");
}
我认为问题不在于java代码,而在于Linux对文件的处理:您将输出定向到一个文件,该文件在创建后立即被视为输入 请尝试使用以下命令:
awk'FNR==1&&NR=1{next;}{print}'/opt/test/*.csv>>/opt/test/output.txt;mv/opt/test/output.txt/opt/test/output.csv
尝试读取错误流以查看发生了什么。您发现的一个示例是,我尝试了此操作,错误是:文件路径无效。感谢您的指导,但如果我尝试使用特定的文件名,即输入文件不等于输出文件的文件名。如果需要将每个.csv文件连接到另一个csv文件中,可以使用“cat/opt/test/*.csv>>/opt/test/output.txt&&mv/opt/test/output.txt/opt/test/output.csv”。这将在LinuxBash上完美地工作。实际上,命令应该是“/bin/bash-c\”cat/opt/test/*.csv>>/opt/test/output.txt;mv/opt/test/output.txt/opt/test/output.csv \“