【问题标题】:FileReader relative pathFileReader 相对路径
【发布时间】:2013-11-24 11:58:21
【问题描述】:

我有一个库,ShaderUtils,我在我的游戏中使用它。现在,当我使用这个库导出我的游戏时,它无法正常工作,因为 ShaderUtils 尝试通过相对路径加载我的着色器。我怎样才能解决这个问题?我希望它像这样加载它:

image = ImageIO.read(Level.class.getClassLoader().getResourceAsStream("heightmap.bmp"));

我目前正在这样做:

BufferedReader reader = new BufferedReader(new FileReader(fragmentLoc));

我需要 bufferedReader,但如何更改它才能像图像文件一样加载?

【问题讨论】:

  • BufferedImage 有一个构造函数,它接受一个字节数组。对于像这样简单的事情,您根本不需要 ImageIO。只需加载文件并制作图像。

标签: java io path relative-path


【解决方案1】:

可以这样做:

new BufferedReader(
    new InputStreamReader(
        Level.class.getClassLoader().getResourceAsStream("your_resource")
    )
);

【讨论】:

    【解决方案2】:
    new BufferedReader(
        new InputStreamReader(
            Level.class.getClassLoader().getResourceAsStream("your_resource")
        )
    );
    

    【讨论】:

    • 谢谢!虽然有很多很棒的答案,但你的答案是最好的!
    【解决方案3】:

    也许你可以试试看,因为 ImageIO.read() 也可以读取文件。

    ImageIO.class

    static BufferedImage read(File input) 
              Returns a BufferedImage as the result of decoding a supplied File with an ImageReader chosen automatically from among those currently registered.
    

    所以创建一个文件 file = new File("path");

    并传递给方法。

    【讨论】:

      【解决方案4】:

      摆脱 FileReader。资源不是文件。您的第一个示例显示了如何将资源作为流获取。将 InputStreamReader 和 BufferedReader 包裹起来。

      为什么您认为您希望 Reader 加载图像文件是另一个问题,而且没有任何意义。

      【讨论】:

        猜你喜欢
        • 2011-03-07
        • 2012-01-11
        • 2010-09-15
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 2010-12-17
        • 2018-06-09
        相关资源
        最近更新 更多