Font.createFont将文件保存在临时目录中

8 java fonts temporary-files graphics2d

下面的代码可以正常工作,但每次运行时都会将字体文件的副本留在临时目录中.这些文件名为+ ~JF7154903081130224445.tmp,其中每个创建的文件的数字似乎是随机的.

InputStream fontStream = this.getClass().getResourceAsStream("handsean.ttf");
Font baseFont = Font.createFont(Font.TRUETYPE_FONT, fontStream);
fontStream.close();
Run Code Online (Sandbox Code Playgroud)

我在sun.com的论坛和网络上的其他资源中发现了几年的讨论,这被认为是JDK中的一个错误,从1.5.0_06升级到1.5.0_08可以解决问题; 但是,我使用的版本是更高版本(1.6.0_13).

我尝试通过在字体相关操作完成后删除文件来解决问题,但此时文件被锁定.只有在Web应用程序停止后才能删除这些文件.

有人有解决方案吗?

Dmi*_*try 2

如果您的 ttf 文件不在存档内,您可以调用 createFont(File) 而不是 createFont(InputStream)

据我所知,这个bug存在于Java 6中,查看Font类的来源就足够了。