【发布时间】:2014-09-26 17:03:04
【问题描述】:
我正在使用 Files.lines(...) 读取一个非常大 (500mb) 的文件。 它读取文件的一部分,但在某些时候它会因 java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
而中断我认为该文件有不同字符集的行。有没有办法跳过这些断线?我知道返回的流由 Reader 支持,并且我知道如何跳过 Reader,但不知道如何从流中获取 Reader 以按照我的喜好进行设置。
List<String> lines = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(getClass().getClassLoader().getResource("bigtest.txt").toURI()), Charset.forName("UTF-8"))) {
stream
.filter(s -> s.substring(0, 2).equalsIgnoreCase("aa"))
.forEach(lines::add);
} catch (final IOException e) {
// catch
}
【问题讨论】:
标签: java file java-8 java-stream