java - 尝试从相对路径读取文件时获取 "java.io.IOException: Stream closed"

标签 java yaml fileinputstream snakeyaml

我正在尝试读取 yaml 文件。起初我有绝对路径,工作正常。现在,当我有要在服务器中部署的 war 文件时,我想将绝对路径更改为相对路径。从那时起它就给出了错误。 代码:

    Yaml yaml = new Yaml();
    InputStream inputStream = getClass().getResourceAsStream("src/main/resources/config/jobnames.yml");
    HashMap yamlMap = yaml.load(inputStream);

异常堆栈:

org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Stream closed
org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218)
org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176)
org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171)
org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126)
org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177)
org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287)
org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195)
org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107)
org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:141)
org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:525)
org.yaml.snakeyaml.Yaml.load(Yaml.java:453)

请帮我看看这是什么问题?谢谢

最佳答案

由于您使用的是ClassLoader,因此路径应该是相对的而不是绝对的,因为resources在类路径上直接可用(代码中也缺少获取ClassLoader )

你可以尝试这个而不是使用绝对路径-

Yaml yaml = new Yaml();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config/jobnames.yml");
HashMap yamlMap = yaml.load(inputStream);

这应该可以解决问题!

关于java - 尝试从相对路径读取文件时获取 "java.io.IOException: Stream closed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63644891/

相关文章:

yaml - 设置 bitbucket 管道 yaml 文件

java - 使用jsoup下载文件,响应bodyStream只能下载一兆字节的文件

Java 文件输入流

php - Travis CI 中 PHP YAML 的问题

r - 使用 "rticles"包时如何更改 RMarkdown 中的字体?

java - FileInputStream 逐字节或 block 读取?

java - 将 Richfaces 添加到基于 Maven 的项目

java,类未找到异常com.mysql.jdbc.Driver

java - 多个递归方法调用的各种堆栈大小

java - 具有同步块(synchronized block)的 Java 内存模型中单例的弱点