我計劃使用Java來處理Markdown文本文件,這些文本文件以YAML格式指定文檔開頭的其他元信息,如標題,作者,創建日期等。這裏有一個例子:使用FilterInputStream刪除InputStream的剩餘部分
---
title: An example document
author: Paul
created: 2013-05-19
---
The _body_ of this document is
written in **Markdown**.
爲了解析這些數據YAML,我可以用snakeyaml。據我所知,您可以通過方法yaml.load()
和yaml.loadAll()
(請參閱the SnakeYAML documentation和API)加載來自java.io.InputStream
,java.io.Reader
或String
的YAML文檔。
我不想使用從String
讀取的版本,因爲這會導致大文件的性能問題。但使用該文件作爲InputStream
失敗,因爲該流不代表有效的YAML文檔。只有流的第一部分表示有效的文檔。
所以我的問題是:如何使用java.io.FilterInputStream
/java.io.FilterReader
或其他方法來生成流,第二---
因此整體流是有效的YAML後停止?
這是一個很好的解決方案,但是我必須在'---'之後停止與[Pandoc](http://johnmacfarlane.net/pandoc/)兼容。 – pvorb