jfreechart不能自动删除生成的图片
来源:互联网 发布:矩阵测光特点 编辑:程序博客网 时间:2024/06/05 04:54
很多情况下jfreechart 在HttpSession失效时不能按预期的自动删除所生成的图片。
通过分析ChartDeleter的原码
public void valueUnbound(HttpSessionBindingEvent event) {
Iterator iter = this.chartNames.listIterator();
while (iter.hasNext()) {
String filename = (String) iter.next();
File file = new File(System.getProperty("java.io.tmpdir"), filename);
if (file.exists()) {
file.delete();
}
}
return;
}
可知,原因在于通常生成的图片的路径并不总是System.getProperty("java.io.tmpdir")。
解决办法:
修改ChartDeleter.java原文件如下
...
public ChartDeleter(HttpSession httpSession) {
super();
this.httpSession = httpSession;
}
public void valueUnbound(HttpSessionBindingEvent event) {
Iterator iter = this.chartNames.listIterator();
while (iter.hasNext()) {
String filename = (String) iter.next();
File file = new File(this.httpSession.getServletContext().getRealPath("/"), filename);
if (file.exists()) {
file.delete();
}
}
return;
}
...
修改ServletUtilities.java如下:
。。。
public static String saveChartAsPNG(JFreeChart chart, int width, int height,
ChartRenderingInfo info, HttpSession session) throws IOException{
if (chart == null) {
throw new IllegalArgumentException("Null 'chart' argument.");
}
ServletUtilities.createTempDir();
String prefix = ServletUtilities.getTempFilePrefix();
if (session == null) {
prefix = ServletUtilities.getTempOneTimeFilePrefix();
}
File tempFile = File.createTempFile(prefix, ".png",
new File(session.getServletContext().getRealPath("/")));
ChartUtilities.saveChartAsPNG(tempFile, chart, width, height, info);
if (session != null) {
ServletUtilities.registerChartForDeletion(tempFile, session);
}
return tempFile.getName();
}
。。。
就是把图片存在项目根目录下。
其实更合适的方式是不修改源文件,通过继承、重写方法的途径是更好的选择。
- jfreechart不能自动删除生成的图片
- 使用HttpSessionBindingListener监听器删除JFreechart生成的垃圾图片
- jfreechart不能在linux系统上正常生成图片的解决方案
- JfreeChart生成图片的几种方式
- jfreechart 自动生成分析图片设计与实现
- JFreeChart生成图片目录设置
- 生成的csv文件,不能自动分列
- 使用ajax刷新jfreechart,jfreechart生成图片不变
- PURGEOLDEXTRACTS 不能自动删除
- JfreeChart在Redhat AS 3 下生成的chart里中文不能正常显示的解决方案
- JFreeChart生成折线图(生成图片本地保存,有解决中文乱码的通用方法)
- JFreeChart生成饼图图片代码分享
- 删除FrontPage自动生成的垃圾文件
- JFreeChart生成柱状图的类
- 修改JFreeChart 图片的路径
- 安全删除每天生成的图片目录
- jfreechart生成WEB图片的,为什么做成的图看不到图像呢?
- 自动生成图片缩略图的JS代码
- 使自动化测试不再老套—灵活自动化测试
- (Javascript)prototype的一个优势也是缺点
- Boost库安装配置
- 刚刚开通,请大家支持啊
- cluster2 architecture
- jfreechart不能自动删除生成的图片
- 这25句话,是世界上最经典的(必看~)
- 实习中遇到的第一个问题! finally version
- 中国原创网游四大天王各领风骚 期待华山论剑
- 圆明园灰烬,比石头更沉重
- 不匹配一个字符串的正则
- 千万日元年薪:中国大规模引进日本退休专家
- 请教问题
- 一个牛X北大学生答日本记者问,超级经典