我想根据一些使用java的条件从文本文件中删除

时间:2017-03-17 05:48:56

标签: java

我正在从文本文件中删除特定数据。因为我正在使用以下程序 1)将数据从文本文件移动到String arraylist。 2)从arraylist中删除特定数据。 3)将数据从arraylist移动​​到另一个文件。

我想从文本文件中删除以下条件的数据。我正在设计页面中使用复选框。 1)如果未选中checkbox1,则从列表中删除“A”。 2)如果没有选中checkbox1,则从列表中删除“B”。 3)如果未选中checkbox1,则从列表中删除“C”。 4)如果没有选中checkbox1,则从列表中删除“D”。

我想根据上述条件从列表中删除数据,然后剩余数据需要存储在新文件或现有文件中。

我的文件数据如下

A -1 D -1 G -1 I -1 K -1 -2 A -1 D -1 G -1 J -1 K -1 -2 B -1 D -1 G -1 I -1 L -1 -2 C -1 E B -1 G -1 I -1 L -1 -2 C -1 F -1 H -1 I B -1 L -1 -2 C -1 F -1 H -1 J -1 K -1 -2 B -1 F -1 H -1 J -1 L -1 -2

为此,我使用了以下代码 -

ArrayList<String> collection = new ArrayList<String>();
ArrayList<String> filter=new ArrayList<String> ();


    try (BufferedReader br = new BufferedReader(new FileReader("input.txt")))
    {

        String sCurrentLine;

        while ((sCurrentLine = br.readLine()) != null) {
            collection.add(sCurrentLine);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } 
   if(!jCheckBox1.isSelected())
   { a=1;
   filter.add("A");
   } 
   if(!jCheckBox2.isSelected())
   { b=1;
   filter.add("B");}
   if(!jCheckBox3.isSelected())
   { c=1;
   filter.add("C");}
   if(!jCheckBox4.isSelected())
   { d=1;
   filter.add("D");}
   if(a==1)
   {
     collection.removeAll(filter);
      System.out.println("Done A");
   }
    if(b==1) 
    {
       collection.removeAll(filter);
       System.out.println("Done B");
    }
    if(c==1)
    {
       collection.removeAll(filter);
       System.out.println("Done C");
    }
    if(d==1)
    {
       collection.removeAll(filter);
       System.out.println("Done D");
    }

   System.out.println(filter);
   System.out.println(collection);



    FileWriter writer = null; 
    try {
        writer = new FileWriter(output);
    } catch (IOException ex) {
        Logger.getLogger(Attribute_UI.class.getName()).log(Level.SEVERE, null, ex);
    }
   for(int i=0;i<collection.size();i++)
  {
      String str =collection.get(i).toString();
        try {
            writer.write(str);
        } catch (IOException ex) {
            Logger.getLogger(Attribute_UI.class.getName()).log(Level.SEVERE, null, ex);
        }
  }
    try {
        writer.close();
    } catch (IOException ex) {
        Logger.getLogger(Attribute_UI.class.getName()).log(Level.SEVERE, null, ex);
    }``

}

以上代码打印数据并保存在新文本文件中,但我无法根据上述条件删除数据。

1 个答案:

答案 0 :(得分:0)

我认为您应该使用以下方式从文本文件中删除特定数据

1.您使用像管道(|)这样的分隔符来从文件中获取不同的元素     例如A -1 | D -1 | G -1 | I -1 | K -1 -2 | A -1 | D -1 | G -1

2.然后使用buffredreader读取文件并使用StringBuffer附加到字符串。

3.使用管道将此字符串压缩 例如String FileDataArray [] = sCurrentLine.split(&#34; \ |&#34;);

4.检查你的情况如下

List list= new ArrayList(Arrays.asList("fileDataArray"));
for(String data:fileDataArray)
{
if(!jCheckBox1.isSelected()&&data.contains("A"))
{ 
  list.removeAll(data);
 } 

      }`

5.然后在新文件中写入列表。 这是我的建议。如果你喜欢挑选它.`