ZipEntry.isDirectory()判断错误

ZipEntry.isDirectory()判断错误pre在写一段涉及文件解压代码的时候遇到了ZipEntry.isDirectory()判断错误,导致解压代码把空文件夹当做文件处理的问题。jdk:1.8.0_144问题代码if(entry.isDirectory()){newFile(destDir+entry.getName()).mkdirs();continue;}问题分析通过分析JDK源码可以确认问题愿意,

ZipEntry.isDirectory()判断错误"

pre

在写一段涉及文件解压代码的时候遇到了ZipEntry.isDirectory()判断错误,导致解压代码把空文件夹当做文件处理的问题。
jdk: 1.8.0_144

问题代码

if (entry.isDirectory()) {
   new File(destDir + entry.getName()).mkdirs();
   continue;
}

问题分析

通过分析JDK源码可以确认问题愿意,在JDK中的isDirectory的判断逻辑就存在问题,在文件夹分隔符与写死的不一致时就会出现问题。

/** * Returns true if this is a directory entry. A directory entry is * defined to be one whose name ends with a '/'. * @return true if this is a directory entry */
 public boolean isDirectory() {
     return name.endsWith("/");
 }

解决方案

借鉴JDK中的思路,自己写出符合跨平台要求的判断是否是文件夹的代码

if (entry.getName().endsWith(File.separator)) {
     new File(destDir + entry.getName()).mkdirs();
     continue;
 }

今天的文章ZipEntry.isDirectory()判断错误分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33288.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注