我正在尝试创建一个程序,将名为text.txt
的文本文件读入ArrayList
。然后,它必须删除包含单词&#34的文本的任何行;我喜欢蛋糕"
所以说这是文件中的文字:
I love cake so much
yes i do
I love cake
I dont care
这是我的代码。我已经阅读了该文件,但我不明白我如何删除某些行(包含"我喜欢蛋糕")。
import java.io.*;
import java.util.*;
public class Cake {
public static void main(String[] args) throws Exception {
File fileIn = new File("text.txt");
ArrayList<String> text = new ArrayList<String>();
Scanner s= new Scanner(fileIn);
String line;
while (s.hasNextLine()) {
line = s.nextLine();
System.out.println(line);
}
s.close();
}
}
答案 0 :(得分:6)
Java8:
Path file = new File("text.txt").toPath();
List<String> linesWithoutCake = Files.lines(file)
.filter(s -> !s.contains("I love cake"))
.collect(Collectors.toList());
您可以continue using the stream使用不包含您的模式的行。例如,计算它们:
long count = Files.lines(file).filter(s -> !s.contains("I love cake")).count();
答案 1 :(得分:1)
您的代码如下所示:
import java.io.*;
import java.util.*;
public class Cake {
public static void main(String[] args) throws Exception {
File fileIn = new File("text.txt");
ArrayList<String> text = new ArrayList<String>();
Scanner s = new Scanner(fileIn);
String line;
while (s.hasNextLine()) {
line = s.nextLine();
if(!line.contains("I love cake")){ //If "I love cake" is not in the line
System.out.println(line); //Then it's ok to print that line
text.add(line); //And we can add it to the arraylist
}
}
s.close();
}
}