删除输入文本文件并将其写入输出文本文件

时间:2017-11-30 20:40:08

标签: java

我正在编写一个输入单词列表和禁止单词列表的程序。然后,它会通过将该文件中的任何禁止词更改为星号来“审查”原始词汇列表。最后,它会将删失的单词列表写入输出文件。这就是我到目前为止所拥有的

import java.util.*;
import java.io.*;

public class Assignment_5 {
public static void main(String[] args) {
   try{
  ArrayList<String> bWords = new ArrayList<String>();
  ArrayList<String> words = new ArrayList<String>();
  Scanner sc = new Scanner(new FileInputStream ("banned.txt"));
  PrintWriter pw = new PrintWriter ("output.txt");
  while(sc.hasNext()){
    bWords.add(sc.next());
  }
  sc = new Scanner(new FileInputStream("input.txt"));
  while (sc.hasNext())
    words.add(sc.next());

  String replacement = "test";
  for (int i = 0; i < words.size(); i++){
    for (int j = 0; j < bWords.size(); j++){
      if (words.get(i).compareTo(bWords.get(j)) == 0){
        for (int k = 0; k < words.get(i).length(); k++)
          replacement = "*";
        words.set(i, replacement);
        replacement = ""; 
      } 
    }

    for(i=0; i< words.size(); i++){
         pw.println(words.get(i));
        }
        pw.close();
     }
   }
   catch(Exception e){
     System.out.println(e.toString());
   }

编译正常并创建“output.txt”文件,但该文件为空。我似乎无法弄清楚为什么它不起作用。任何帮助都会很棒

UDPATE:它现在打印出来,因为我在PrintWriter前面添加了一个for循环(在代码中更新),但是现在它只打印出输入,而不是删除输入

1 个答案:

答案 0 :(得分:1)

PrintWriter pw = new PrintWriter ("output.txt");

代码中的这一行是一次又一次地重写文件。 你能做的就是把它放在循环之外。 也不要忘记在循环结束后关闭流。

pw.close()