当前位置: 首页 > news >正文

geotools加载tif 无法关闭tif的流导致tif文件无法删除问题

问题

使用如下代码,虽然调用了 dispose 方法,但是却没有释放 tifio 流,会导致文件删除失败

 public static void main(String[] args) throws IOException {File file = new File("D:\\1.tif");//此处会加载一次tif,但加载完会直接closeGeoTiffReader reader = new GeoTiffReader(file);//此处也会加载一次tif,但却无法关闭,即使调用disposeGridCoverage2D read = reader.read(null);
//        read.dispose(true);reader.dispose();if (!file.delete()) {System.out.println("删除失败");}
}

相关依赖

<dependency><groupId>org.geotools</groupId><artifactId>gt-geotiff</artifactId><version>21.1</version>
</dependency>

解决方案

如下所示,自己获取文件的 io 流关闭

public static void main(String[] args) throws IOException {File file = new File("D:\\Desktop\\taiwan\\L14/den.tif");//此处会加载一次tif,但加载完会直接closeGeoTiffReader reader = new GeoTiffReader(file);//此处也会加载一次tif,但却无法关闭,即使调用disposeGridCoverage2D read = reader.read(null);//使用如下代码关闭流RenderedOp renderedImage = (RenderedOp) read.getRenderedImage();for (Object parameter : renderedImage.getParameters()) {if (parameter instanceof ImageInputStream) {((ImageInputStream) parameter).close();}}read.dispose(true);reader.dispose();if (!file.delete()) {System.out.println("删除失败");}
}

原因分析

只会贴几个核心地方的代码,不会全贴

如下两张图所示GeoTiffReader.reader411行会创建一个读取 tifImageInputStream 添加到ParameterBlock里,然后创建组合ParameterBlockRenderOp ,之后再创建组合RenderOpGridCoverage2D 返回。注意,此处的pbjRead.add 是添加ImageInputStreamParameterBlockparameters 中。

然后在GridCoverage2Ddispose中用调用 imagedispose,此处的image即上面的RenderOp,

可以自己去看 imagedispose ,可以发现并没有循环ParameterBlockparameters 关闭 ImageInputStream

 read.getRenderedImage() 可以拿到 RenderOp, 所以就可以自己循环ParameterBlockparameters 释放 ImageInputStream 从而解决问题

http://www.dtcms.com/a/598537.html

相关文章:

  • SDK MicroBlaze ELF文件大小分析
  • 学校的网站如何建设方案哈尔滨seo关键词排名
  • 知名企业网站分析 比较评估重庆平台网站建设企业
  • vs做网站如何放背景图流量平台有哪些
  • 浅谈分页偏移量公式:为什么是 `(pageNum - 1) * pageSize`?
  • 解决方案网站排名第三方平台做网站网站
  • C++ 并发与同步速查笔记(整理版)
  • 上海网站建设电话做网站app的工资高吗
  • 南宁在那里推广网站windows10php网站建设
  • 惠州网站建设 英语专业购物网站
  • 苍穹外卖资源点整理+个人错误解析-Day06-微信登陆、商品浏览
  • 此网站不支持下载视频怎么办鞍山58同城找工作 招聘
  • 湛江网警网站 优化 教程
  • ROS1基础入门:从零搭建机器人通信系统(Python/C++)
  • Scikit-learn 入门指南:从零到一掌握机器学习经典库(2025 最新版)
  • 做那个的网站谁有手机如何制作小程序
  • 自己做的网站把密码改忘了怎么办wordpress 表格 插件
  • 成都园林景观设计公司推荐南京seo培训
  • InvivoCrown丨艾美捷代理(货号:SIM0053)BioSIM抗人IL-13抗体(来瑞组单抗生物类似药)研究级探索2型免疫反应的精密研究
  • oracle数据库网站开发网站建设和成本
  • 太原网页设计厦门网站排名优化软件
  • 专题网站建设意义何在网址大全2345
  • 网站建设视频教程最新企业品牌文化建设学习网站
  • CI/CD集成工程师前景分析:与开发岗位的全面对比
  • 网站建设费计入哪个科目汕头网站优化公司
  • 智慧团建网站什么时候维护好中国招商平台
  • 自己做的网站访问不栅格化系统制作网页界面设计
  • 做定制网站多少钱四川网络推广公司哪家好
  • Paint Net(windows免费绘画软件) v5.1.10
  • 东莞网站建设方案表短链接生成源码