【问题标题】:reading a resource ends up null读取资源最终为空
【发布时间】:2013-03-10 09:29:18
【问题描述】:

我有以下代码

System.out.println("Path::: "+path);
InputStream resource = this.getClass().getResourceAsStream(path);

现在路径是: src/resources/FF/1-Battle.mp3

这是我的文件夹结构:

src 
 |- resources
 |    |- FF
 |    |   |- 1-Battle.mp3
 |- folder
 |    |- prog.java   <- this is the place where the code is run

问题是资源(输入流)最终为空

这需要从 jar 文件中工作,所以我需要它与 jar 文件根目录而不是硬盘目录相关,因此我无法创建文件,因为在 jar 文件中,文件在 java 下是不可分类的。 io.文件

【问题讨论】:

  • 你能显示你的变量path吗?
  • 尝试将路径从src/resources/FF/1-Battle.mp3更改为/src/resources/FF/1-Battle.mp3,即以斜杠开头,表示您正在从项目根目录搜索。
  • 根目录需要是相对的,以/开头的路径从硬盘根目录开始,因此我需要知道jar文件的位置。

标签: java null inputstream


【解决方案1】:

您为什么不能使用FileInputStream 来阅读它?像这样的东西:-

InputStream fileStream = new FileInputStream(new File(path));

并确保路径是正确的相对 URL。

【讨论】:

    【解决方案2】:

    您是否尝试使用程序执行位置的相对路径?比如“../../resources/FF/1-Battle.mp3”?

    【讨论】:

    • 如果你这样做,你可以使用File.separator而不是/
    【解决方案3】:

    看起来您正试图从 jar 文件中读取 mp3 文件,因为 mp3 文件位于您的 src 文件夹中。试试这个:

        try {
            ClassLoader cl = this.getClass().getClassLoader();            
            InputStream resource = cl.getResource("resources/1-battle.mp3").openStream();
        }
        catch(Exception ug) {
            System.out.println("Failed to load mp3 from jar:" + ug.toString());
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2012-02-22
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      相关资源
      最近更新 更多