【发布时间】:2017-09-09 03:14:43
【问题描述】:
我的程序应该从命令行获取参数。例如,如果我调用 java Test1 Meredith,从 myFile.txt 中删除 Meredith,并将更新的信息发送到名为 targetFile.txt 的新文本文件中。我不确定它是否确实访问了 myFile.txt。它是如何访问的?我的意思是它怎么知道我需要从下面的代码访问 myFile.txt ?是 args[0] 吗?
import java.io.*;
import java.util.*;
public class Test1 {
public static void main(String[] args) throws Exception {
if (args.length != 4) {
System.out.println(
"Usage: java Test1 myFile.txt targetFile.txt aaa ccc");
System.exit(1);
}
// Check if source file exists
File sourceFile = new File(args[0]);
if (!sourceFile.exists()) {
System.out.println("Source file " + args[0] + " does not exist");
System.exit(2);
}
// Check if target file exists
File targetFile = new File(args[1]);
if (targetFile.exists()) {
System.out.println("Target file " + args[1] + " already exists");
System.exit(3);
}
StringBuilder sb = new StringBuilder();
try (
// Create input and output files
Scanner input = new Scanner(sourceFile);
PrintWriter output = new PrintWriter(targetFile);) {
while (input.hasNext()) {
String s1 = input.nextLine();
String s2 = s1.replaceAll(args[2], args[3]);
sb.append("\r\n" + s2);
}
}
try (
PrintWriter output = new PrintWriter(sourceFile);) {
output.printf("%s\r\n", sb.toString());
}
}
}
【问题讨论】:
-
问题出在哪里?
-
不应该是
s1.replaceAll(args[2], "");来简单地删除“Meredith”吗? -
看起来您正在将结果写回
sourceFile,而不是targetFile... -
好吧,我不确定它是否可以访问 myFile.txt。它怎么知道那是我首先需要访问的文件?
-
梅雷迪思对你做了什么??
标签: java command-line io