【发布时间】:2016-05-25 16:01:37
【问题描述】:
我正在尝试读取一个巨大的文件并提取“引号”中的文本并将这些行放入一个集合中,然后使用 Java 8 Stream 将该集合的内容写入一个文件。
public class DataMiner {
private static final Pattern quoteRegex = Pattern.compile("\"([^\"]*)\"");
public static void main(String[] args) {
String fileName = "c://exec.log";
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
Set<String> dataSet = stream.
//How do I Perform pattern match here
.collect(Collectors.toSet());
Files.write(Paths.get(fileName), dataSet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
请帮助我。谢谢!
编辑:问题的答案..
- 不,没有多个引用文本。
- 我可以使用简单的循环。但我想使用 Java 8 流
【问题讨论】:
-
1) 引用的文本可以跨越多行吗? 2)如果一行有
abc "def" ghi "jkl" mno,应该收集什么? -
文档总是一个很好的起点。例如。
Stream#map(Function) -
@khelwood 我不确定这是否适用于他的要求。假设他使用
.map(...),他将能够编写拆分字符串,但返回的字符串将是数组或其他结构中的组。但是他正在处理的流期待一个字符串。你有他如何做到这一点的例子吗? -
有什么理由要使用 Java 8 流而不是简单循环?另外,创建将存储所有结果的临时 Set 的意义何在。您可以将每个找到的结果直接写入文件中(假设它与您正在读取的文件不同)。
标签: java