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