文件输出删除所有内容

时间:2015-07-02 00:05:32

标签: file-io java-io

我正在尝试创建一个从文件中删除文本的程序。要删除的文本和文件路径作为命令行参数提供。一切都很顺利,但是当我在程序运行完毕后打开文件时,它都是空的。我做错了什么?

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");
}
}

1 个答案:

答案 0 :(得分:1)

打开要写入的文件会清除文件,因此如果输入和输出文件相同,则输入将被清除,因为没有行,所以不会发生任何事情。