java 引入自定义字体font后出现的硬盘吃光的问题
有个需求要用美术字体在图片上写字
用自定义的文字有两个方法:
1、
Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream input);
2、
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文件的描述
http://www.securiteam.com/windowsntfocus/5UP0H0KDFU.html
http://stackoverflow.com/questions/1751673/font-createfont-leaves-files-in-temp-directory
[#4743] - Too many temporary font files (+~JF tmp)
http://community.jaspersoft.com/jasperreports-library/issues/4743
有各种的说法:有人说是bug,有些人说升级到有些版本不会有问题,有些人说是操作系统的缘故等。
还有人的解决方案是定时跑任务,删除tmp文件。这个方式非常不妥当。
以下就是一个用input方式引入自定义font的方式,下面参考资料有坑。
http://www.java2s.com/Code/Java/2D-Graphics-GUI/Loadfontfromttffile.htm
其实问题很简单,只要替换成第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流,不必关系是否关系。
做项目的一个坑,自己做个笔记
java 引入自定义字体font后出现的硬盘吃光的问题的更多相关文章
- CSS怎么在项目里引入自定义字体(@font-face)
前言: 以前我一直用内置的默认字体给文字设置字体,直到一天UI妹纸给了我下面的字体 当时我是蒙蔽的,这个字体的效果如下 默认字体并无该字体,直接设置是没有效果的,这时就需要用到自定义字体了 下面 ...
- java 图片合成文字或者awt包下的对话框引入自定义字体库
成就卡图片字体问题:1.下载 xxx.ttf 文件2.mkdir /usr/local/jdk1.6.0_11/jre/lib/fonts/fallback. 在jre/lib/fonts 下 ...
- css 之引入自定义字体/特殊字体-----使用ttf格式语言包
1.准备好需要的 .ttf 格式的语言包,在css导入: @font-face { font-family: myFont; src: url('../assets/font/Oswald-SemiB ...
- webpack项目如何正确打包引入的自定义字体?
一. 如何在Vue或React项目中使用自定义字体 在开发前端项目时,经常会遇到UI同事希望在项目中使用一个炫酷字体的需求.那么怎么在项目中使用自定义字体呢? 其实实现起来并不复杂,可以借用CSS3 ...
- webpack项目如何正确打包引入的自定义字体
webpack项目如何正确打包引入的自定义字体 一. 如何在Vue或React项目中使用自定义字体 在开发前端项目时,经常会遇到UI同事希望在项目中使用一个炫酷字体的需求.那么怎么在项目中使用自定义字 ...
- 如何用Unity制作自定义字体——Custom Font
一.效果图 二.步骤 将美术做好的字体分块导入BMFont,使用BMFont工具生成艺术字库: 将上面的数据导入unity资源目录下:*.fnt文件中记录每个文字的状态信息: 导入*.png图片并设置 ...
- css3之自定义字体
使用@font-face自定义字体 我们在浏览国外的一些个人网站时,总是可以发现一些非常个性的字体,比如
- 【Android 界面效果42】如何自定义字体
项目里要统一用设计师的字体,android:typeface只支持系统三种字体.有什么比较好的做法? 你需要为整个应用替换自定义字体. 解决方案 1)Android默认方法 #1 你可以通过ID查找到 ...
- Android:更好的自定义字体方案
http://ryanhoo.github.io/blog/2014/05/05/android-better-way-to-apply-custom-font/ 情景 解决方案 1)Android默 ...
随机推荐
- C++开始前篇,深入编译链接(3)
一,COMMON块 什么是COMMON块,这是一种机制,早期的Fortran没有动态分配空间的机制,程序员必须事先声明它所需要的临时使用空间的大小.Fortran把这种空间叫做COMMON块,当不同的 ...
- Struts中文件上传的一些规则...
1.action中定义规范 如果jsp中file的name="xxx",那么后台action中的属性要做相应更改为 private File xxx; private String ...
- python ImportError: No module named builtins
解决方案: sudo pip install future
- Android中用TextView显示大量文字的方法
最近学习Android中,试着实现一个简单的显示新闻Demo的时候,遇到了一个问题:一条新闻的内容文字很多,放在TextView上面超出屏幕了,怎么破? 查了一下资料,找到了两种方法实现: 1. 只用 ...
- Linux deepin 下sublimes配置g++ openGL
参考 :http://blog.csdn.net/u010129448/article/details/47754623 ubuntu 下gnome只要将代码中deepin-terminal改为gno ...
- android shape的使用(转)
shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: <?xml version="1.0" encoding="ut ...
- WebGL入门教程(五)-webgl纹理
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...
- 如何在Meteor中使用npm模块?
首先,请在AtmosphereJs上搜索有无相关的封装包.尽量采用已有的封装包,而不是自己封装. 有两种方法在项目中使用来自npm的模块. 封装为Meteor包并在项目中添加包.使用meteor cr ...
- Java面向对象之封装
面向对象的三个特征:封装.继承和多态. Java开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...
- Hello, cnblogs !
来博客园的第一天. 大学毕业三年多了,感觉自己碌碌无为,不知道自己究竟想做什么,就这样浑浑噩噩过了三年多. 记得大三那年,为了准备大四的毕业设计,自学了好几个月的Java EE.Java基础.Java ...