java - 如何以 Java 8 方式获取特定 URL 上的文本行流?

标签 java java-8 java-stream

我想逐行阅读这些词:http://www.puzzlers.org/pub/wordlists/unixdict.txt

我尝试获取流:

Stream<String> stream = Files.lines(Paths.get("http://www.puzzlers.org/pub/wordlists/unixdict.txt"));
stream.forEach((word) -> System.out.println(word));
//Close the stream and it's underlying file as well
stream.close();

但我怀疑它只适用于文件。是否有类似的 URL 方法?

最佳答案

BufferedReader 还有一个返回流的 lines() 方法。所以你只需要打开一个 BufferedReader 包装一个 InputStreamReader 包装 URL 连接输入流:

try (InputStream is = new URL("http://www.puzzlers.org/pub/wordlists/unixdict.txt").openConnection().getInputStream();
     BufferedReader reader = new BufferedReader(new InputStreamReader(is));
     Stream<String> stream = reader.lines()) {
    stream.forEach(System.out::println);
}

关于java - 如何以 Java 8 方式获取特定 URL 上的文本行流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691049/

相关文章:

java - 从另一个对象列表中删除重复的列表对象值

java - 将对象元素按有序位置插入数组,而不使用 Java 中的排序算法

java - 作用域中断,它们存在吗?

java - 如何查看 Graphics2D 中的某些内容是否超出框架

Java 8 : How to perform timeout for SSLSocket. 开始握手()

java-8 - 如何根据数量连接 java8 列表中的字符串元素?

java - 当 FileChooser 处于 Activity 状态时防止窗口聚焦

java - 为什么 Stream() 在 Scala 中不像在 Java 中那样工作?是否有其他 API 与 Stream() API 功能相同?

java - Java 8中列表的二级过滤

java - Spring Bean 属性上的 JSR-303 注解