java 将输入复制到多个输出文件
java copying input to multiple output files
我正在尝试将 inputFile 的内容复制到多个其他文件。我正在尝试使用命令行参数来执行此操作。
但是,我在关闭 printwriter 时遇到了一些困难。我不知道我应该在哪里或如何做。如果我在我的 for 循环中这样做,内容只会被复制到一个输出文件中。我尝试了一个 if 语句,但它也不起作用。如果我在 for 循环之外关闭它。我得到一个 'cannot find symbol error' 这是有道理的,因为我在 for 循环中声明了它。
因此我的问题是:在这种情况下,我应该如何以及在何处关闭 printwriter?
提前谢谢你。
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();
}
}
首先制作 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) {}
}
我正在尝试将 inputFile 的内容复制到多个其他文件。我正在尝试使用命令行参数来执行此操作。
但是,我在关闭 printwriter 时遇到了一些困难。我不知道我应该在哪里或如何做。如果我在我的 for 循环中这样做,内容只会被复制到一个输出文件中。我尝试了一个 if 语句,但它也不起作用。如果我在 for 循环之外关闭它。我得到一个 'cannot find symbol error' 这是有道理的,因为我在 for 循环中声明了它。
因此我的问题是:在这种情况下,我应该如何以及在何处关闭 printwriter?
提前谢谢你。
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();
}
}
首先制作 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) {}
}