如何将文本文件读入arraylist,不包括包含某些单词的行?

时间:2015-06-09 20:05:37

标签: java arraylist

我正在尝试创建一个程序,将名为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();
    }
}

2 个答案:

答案 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)

尝试String.contains() method

您的代码如下所示:

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();
    }

}