今天在博洋教育学习,老师出了一个需求,要用美术字体在图片上写字,用自定义的文字有两个方法:
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT,
InputStream input);
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, new
File(pathString));
我一开始用的是第一种方法:
InputStream input =
FontLoader.class.getResourceAsStream(classPathTTF);
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT,
input);
input.close();
然后就出现了吃硬盘的问题。
它会在你的容器的临时文件哪里写很多的临时文件
你用一次他就读一次,拷贝一份 *.tmp文件出来
对于tmp文件的描述google上有很多资料,但是也没有点到要点。
问题参考资料:
sun关于tmp文件的描述
有各种的说法:有人说是bug,有些人说升级到有些版本不会有问题,有些人说是操作系统的缘故等。
还有人的解决方案是定时跑任务,删除tmp文件。这个方式非常不妥当。
其实问题很简单,只要替换成第2个方法就可以了。
String pathString =
FontLoader.class.getResource("/font/xxx.ttf").getFile();
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, new
File(pathString));
这样无论多少次饮用都不会有tmp文件产生
总结一下
方法1、消耗IO,吃硬盘,速度慢,生成很多tmp的文件,大硬盘没感觉,吃光了你就叫吧。
方法2、低IO,速度快,不会生成tmp文件,没有input流,不必关系是否关系。
博洋教育(http://www.softfz.com/)教师简介:吴慧和,ERP系统设计专家,10年教学经验。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21268070/viewspace-1115430/ ,如需转载,请注明出处,否则将追究法律责任。