java - 使用 FilterInputStream 删除 InputStream 的剩余部分

标签 java yaml java-io

我计划使用 Java 处理 Markdown 文本文件,这些文件在文档开头以 YAML 格式指定附加元信息,如标题、作者、创建日期等。这是一个例子:

---
title: An example document
author: Paul
created: 2013-05-19
---

The _body_ of this document is
written in **Markdown**.

为了解析 YAML 数据,我可以使用 snakeyaml 。据我所知,您可以从 java.io.InputStreamjava.io.ReaderString 加载 YAML 文档通过方法 yaml.load()yaml.loadAll() (参见 the SnakeYAML documentationAPI )。

我不想使用从String读取的版本,因为这会导致大文件的性能问题。但是将文件作为 InputStream 处理会失败,因为该流不代表有效的 YAML 文档。只有流的第一部分代表有效文档。

所以我的问题是:如何使用 java.io.FilterInputStream/java.io.FilterReader 或其他方法生成流,该流在第二个之后停止--- 所以整个流是有效的 YAML?

最佳答案

在您希望 YAML 解析器停止的位置添加“...”(三个点)。

关于java - 使用 FilterInputStream 删除 InputStream 的剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16636787/

相关文章:

Java 类 : how to check for compatibility to avoid classloading/compatibility issues at runtime

java - Spring Actuator http,但嵌入式 servlet https

java - Java中的隐藏字符StringTokeneizer/split?

java - 输入流与读取器

java - 读取文件夹中的整个文件

java - 使用 RandomAccessFile 在中间插入文本会删除一些文本

java - 数组和Java字符串错误 : [Ljava. lang.String;@19c42c4b

json - 是否可以将 YAML 嵌入到 JSON 有效负载中?

python - 转储 yaml 时如何保留键值缩进

java - application.yml 是否支持环境变量?