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

我想根据一些条件使用java从文本文件中删除,java,Java,我正在从文本文件中删除特定数据。为此,我使用以下程序 1) 将数据从文本文件移动到字符串arraylist。 2) 正在从arraylist中删除特定数据。 3) 将数据从arraylist移动到另一个文件 我想从以下条件的文本文件中删除数据。我在设计页面中使用复选框。 1) 如果未选择复选框1,则从列表中删除“A”。 2) 如果未选择复选框1,则从列表中删除“B”。 3) 若未选择复选框1,则从列表中删除“C”。 4) 如果未选择复选框1,则从列表中删除“D” 我想根据上述条件从列表中删除数据

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

我想从以下条件的文本文件中删除数据。我在设计页面中使用复选框。 1) 如果未选择复选框1,则从列表中删除“A”。 2) 如果未选择复选框1,则从列表中删除“B”。 3) 若未选择复选框1,则从列表中删除“C”。 4) 如果未选择复选框1,则从列表中删除“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-1F-1H-1IB-1L-1-2 C-1F-1H-1J-1K-1-2 B-1F-1H-1J-1L-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);
    }``
ArrayList集合=新建ArrayList();
ArrayList过滤器=新的ArrayList();
try(BufferedReader br=newbufferedreader(newfilereader(“input.txt”))
{
弦电流线;
而((sCurrentLine=br.readLine())!=null){
集合。添加(当前行);
}
}捕获(IOE异常){
e、 printStackTrace();
} 
如果(!jCheckBox1.isSelected())
{a=1;
过滤。添加(“A”);
} 
如果(!jCheckBox2.isSelected())
{b=1;
filter.add(“B”);}
如果(!jCheckBox3.isSelected())
{c=1;
filter.add(“C”);}
如果(!jCheckBox4.isSelected())
{d=1;
filter.add(“D”);}
如果(a==1)
{
收集。移除所有(过滤器);
系统输出打印项次(“完成A”);
}
如果(b==1)
{
收集。移除所有(过滤器);
系统输出打印项次(“完成B”);
}
如果(c==1)
{
收集。移除所有(过滤器);
系统输出打印项次(“完成C”);
}
如果(d==1)
{
收集。移除所有(过滤器);
系统输出打印项次(“完成D”);
}
System.out.println(过滤器);
系统输出打印项次(集合);
FileWriter=null;
试一试{
writer=新文件编写器(输出);
}捕获(IOEX异常){
Logger.getLogger(属性_UI.class.getName()).log(Level.SEVERE,null,ex);
}

对于(inti=0;i我认为您应该使用以下方法从文本文件中删除特定数据

1.使用类似分隔符的管道(|)从文件中获取不同的元素 e、 g A-1 | D-1 | g-1 | I-1 | K-1-2 | A-1 | D-1 | g-1

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

用管子把这根绳子打翻 e、 g字符串FileDataArray[]=sCurrentLine.split(“\\”)

4.检查你的状况如下

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

      }`
5.然后将列表写入新文件。
这是我的建议。如果您喜欢,请选择它。`

我建议您尝试调试此代码。
System.out.println(过滤器);System.out.println(集合);
System.out.println(过滤器)=>A、B、F]和System.out.println(集合)=>[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 L-1 L-1-2,C-1 E B-1 G-1 I-1 L-1-1-2代替使用分隔管(|)我可以使用“-1”作为分隔符吗?而((sCurrentLine=br.readLine())!=null){FileDataArray=sCurrentLine.split(“-1”);collection.add(sCurrentLine)}List List=newarraylist(Arrays.asList(“FileDataArray”);if(!jCheckBox1.isSelected()){for(String data:FileDataArray){if(!jCheckBox1.isSelected()&&data.contains(“A”){List.removall(data);}}}在List.removall(data)处显示错误;您可以使用-1,但它不会像您预期的那样拆分。然后它会像[A-1 A-1 D-1 G-1 I-1 K-1-2]一样拆分,还可以使用remove而不是removeall。它在我的机器上工作。