【发布时间】:2019-09-04 05:11:05
【问题描述】:
我正在编写一个实用方法,用于将 .jar 文件中的文件加载到 ByteBuffer 中。由于某种原因,它返回的字节数比源文件中的字节数多。
相关代码(Full class):
try (var stream = getClass().getResourceAsStream(filePath)) {
var bytes = stream.readAllBytes();
log.info(bytes.length + " bytes or " + bytes.length / 1024 + "kb");
}
在测试我的方法时,我传入了一个文件路径“/fonts/m5x7.ttf”。根据 macOS 查找器,该文件的大小为 34,300 字节 (33kb) 或磁盘上的 37 KB。在测试我的方法时,会打印以下内容:39090 字节或 38kb。测试是在 macOS 上完成的,使用 Java 11 编译。
由于某种原因,我得到的文件比实际文件多 5KB。
编辑:奇怪的是,我能够加载一个 .png 文件就好了。我尝试加载另一个 .ttf 文件,但它有同样的问题。
我的方法输出:356958 字节或 348kb。实际文件大小:356,958 字节(磁盘上 393 KB)
【问题讨论】:
-
m5x7.ttf 只是一个测试文件吗?因为通常情况下,您不会将字体读入 ByteBuffer,而是将 InputStream 传递给字体加载方法。
-
它的目的是在我的程序中实际使用。我正在使用包装本机库的 lwjgl。我正在使用的库需要作为 ByteBuffer 传递的字体数据。你可以在这里看到它的使用情况:(github.com/harding-capstone/engine/blob/…)