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默 ...
随机推荐
- mysql5.6 忘记root密码
1.首先net stop mysql服务,并且切换到任务管理器,有与mysql有关的,最好关闭进程. 2.运行CMD命令切换到MySql安装bin目录,下面是我的mysql安装目录 cd D:\Pr ...
- Mac OS X系统安装盘制作
本文来记录一下制作苹果系统安装盘的步骤: 1. 准备一个空白的U盘或移动硬盘和去App Store下载好最新版本的系统,现在最新的是:macOS Sierra,下载后会默认打开安装进程,退出不管即可, ...
- 浅析/dev/shm
一,/dev/shm 概念 /dev/shm 是一个tmpfs文件系统,临时文件系统,是基于内存的文件系统,也就是说/dev/shm中的文件是直接写入内存的,而不占用硬盘空间. 在Centos和Red ...
- 【leetcode】Happy Number
题目简述 Write an algorithm to determine if a number is "happy". A happy number is a number de ...
- sizeof(转载)
原文地址:http://blog.sina.com.cn/s/blog_5da08c340100bmwu.html 转载至:http://www.cnblogs.com/wangkangluo1/ar ...
- OpenCV 人脸识别 C++实例代码
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include & ...
- 配置apue的头文件apue.h和unp的头文件anp.h
配置apue的头文件apue.h和unp的头文件anp.h 如果要使用gcc -g 来生成可调试文件一定要修改Make.defines.linux文件中的CFLAGS变量 修改为:CFLAGS=-an ...
- Python 判断变量的类型
这里有两种方法.type 和isinstance import types aaa = 0 print type(aaa) if type(aaa) is types.IntType: print & ...
- 【字符串匹配】KMP算法和next数组的c/c++实现
KMP算法基本思想有许多博客都写到了,写得也十分形象,不懂得可以参考下面的传送门,我就不解释基本思想了.本文主要给出KMP算法及next数组的计算方法(主要是很多网上的代码本人(相信应该是许多人吧)看 ...
- 基于Proteus仿真的Arduino学习(2)——LED点阵探究A(LED点阵基础)
一.前言: 随着LED的普及,以LED点阵为基础的显示设置层出不穷.例如,公交车的线路提示牌.高速公路的信息提示牌,安装在大楼上的广告屏幕等.下面,我们将由简单到复杂地探索各种LED点阵的使用方法,同 ...