我正在尝试将inputFile的内容复制到多个其他文件中。我试图使用命令行参数来做到这一点。
但是,我在关闭编剧时遇到了一些困难。我不知道应该在哪里或如何做。如果我在for循环中执行此操作,则内容仅会复制到一个输出文件中。我尝试了一个if语句,但那也没有用。如果我在for循环之外关闭它。我找不到符号错误'这是有意义的,因为我在for循环中声明它。
我的问题是:在这种情况下我应该如何以及在哪里关闭版画作品?
提前谢谢。
import java.util.*;
import java.io.*;
public class try13 {
public static void main(String[] args) throws FileNotFoundException {
File inputFile = new File(args[0]);
Scanner in = new Scanner(inputFile);
for(int i = 1; i < args.length; i++) {
PrintWriter out = new PrintWriter(args[i]);
while (in.hasNextLine()) {
String line = in.nextLine();
out.println(line);
}
}
in.close();
out.close();
}
}
答案 0 :(得分:0)
首先制作一个PrintWriters
数组,然后将从输入读取的每一行复制到所有输出中:
import java.util.*;
import java.io.*;
public class try13 {
public static void main(String[] args) throws FileNotFoundException {
File inputFile = new File(args[0]);
Scanner in = new Scanner(inputFile);
/* Create all the writers and put then in a list */
List<PrintWriter> writers = new ArrayList<>();
for(int i = 1; i < args.length; i++) {
writers.add(new PrintWriter(args[i]));
}
/* Read each line and write it to all writers */
while (in.hasNextLine()) {
String line = in.nextLine();
writers.forEach(writer -> writer.println(line));
}
in.close();
/* Close all the writers */
writers.forEach(writer -> {
try {
writer.close();
} catch(Exception e) {}
});
}
}
如果您不使用Java8 ,请尝试以下操作:
/* Read each line and write it to all writers */
while (in.hasNextLine()) {
String line = in.nextLine();
for(PrintWriter writer : writers) {
writer.println(line);
}
}
......而且这个:
/* Close all the writers */
for(PrintWriter writer : writers) {
try {
writer.close();
} catch(Exception e) {}
}