我正在尝试创建一个从文件中删除文本的程序。要删除的文本和文件路径作为命令行参数提供。一切都很顺利,但是当我在程序运行完毕后打开文件时,它都是空的。我做错了什么?
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Remove {
public static void main(String[] args) throws IOException{
if(args.length != 2) {
System.out.println("usage : java Remove stringToRemove filePath");
System.exit(1);
}
String stringToReplace = args[0];
String path = args[1];
File file = new File(path);
if(!file.exists()) {
System.out.println("No such file exists!");
System.exit(2);
}
Scanner input = new Scanner(file);
PrintWriter output = new PrintWriter(file);
while(input.hasNext()) {
String currentLine = input.nextLine();
currentLine = currentLine.replaceAll(stringToReplace, "");
output.println(currentLine);
}
input.close();
output.close();
System.out.println("Operation Successful");
}
}
答案 0 :(得分:1)
打开要写入的文件会清除文件,因此如果输入和输出文件相同,则输入将被清除,因为没有行,所以不会发生任何事情。