我正在从文本文件中删除特定数据。因为我正在使用以下程序 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);
}``
}
以上代码打印数据并保存在新文本文件中,但我无法根据上述条件删除数据。
答案 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.然后在新文件中写入列表。 这是我的建议。如果你喜欢挑选它.`