У класса Files есть метод lines, который читает данные из файла.

public static Stream<String> lines(Path path) throws IOException {
        return lines(path, StandardCharsets.UTF_8);
    }

Что здорово, там по дефолу проставляется кодировка UTF_8, т.е. нам её не надо указывать явно.

Т.е. это стрим, то мы можем сделать метод, который данные из каждой строки файла складывает в коллекцию лист.
Тут можно сделать в filter например игнорирование комментариев(считаем, что # это комментарий), удалять дублирующиеся символы
distinct и еще много чего:

public static List<String> listLineFiles(String pathToFile) {
		
		try {
			return  Files.lines(Paths.get(pathToFile)).filter(x->!x.startsWith("#")).distinct().collect(Collectors.toList());
		} catch (IOException e) {
			return null;
		}
	}

Т.е. есть файл с данными
example.org
example2.org
example3.org
example3.org
#для презентаций новым клиентам
exampledemo.org

Если мы вызовем данный метод, передав туда путь к файлу, то в коллекции будут только:
[example.org, example2.org, example3.org, exampledemo.org]

Реклама