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默 ...
随机推荐
- web适配问题
bootstrap模板为使IE6.7.8版本(IE9以下版本)浏览器兼容html5新增的标签,引入下面代码文件即可. <script src="https://oss.maxcdn.c ...
- SQL Server 得到数据库中所有表的名称及数据条数
--方法一if exists ( select * from dbo.sysobjects where id = object_id(N'[dbo].[TableSpace]') and object ...
- Javascript原型继承 __proto__
Javascript继承是通过原型链继承的 原型链是依赖__proto__而不是prototype var animal = function(){}; var dog = function(){}; ...
- [leetcode] 390 Elimination Game
很开心,自己想出来的一道题 There is a list of sorted integers from 1 to n. Starting from left to right, remove th ...
- PHP常用函数、数组方法
常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...
- tcp三次握手、四次挥手
TCP的三次握手(建立连接)和四次挥手(关闭连接):http://blog.csdn.net/whuslei/article/details/6667471/ TCP协议中的三次握手和四次挥手(图解) ...
- iTerm 2 && Oh My Zsh
一年前,在搞终端的时候偶然一次机会,让我看到了各种强大的DIY界面,这让我很想去自己搞一个.于是在网上不断的寻找资源,也请教了大多数朋友.最终以失败告终.最近,本人又突然想起当时这件事,于是,决定边做 ...
- 写给Git初学者的7个建议
[原文] - http://blog.jobbole.com/50603/ 当我刚刚开始使用Git的版本控制时,我根本不确定我付出那么多时间是不是会得到回报.Branch.Stage.Stash,这些 ...
- 【Oracle】dba_jobs字段说明
dba_jobs 1 字段(列) 数据类型 描述 JOB NUMBER 任务的唯一标示号 LOG_USER ) 提交任务的用户 PRIV_USER ) 赋予任务权限的用户 SCHEMA_USER ) ...
- phpstorm常用快捷键
mac电脑phpstorm快捷键 command + a 全选 command + c 复制 command + v 粘贴 command + z 撤消 fn+comma ...