【导入】JAVA实现校验压缩包里不能包含文件夹

 

那就校验一下吧wuwuwu

public void zipImport(@RequestParam("file") MultipartFile file) throws IOException {
    try (ZipInputStream zis = new ZipInputStream(file.getInputStream,Charset.forName("GBK"))) {
          ZipEntry entry;

          while ((entry = zis.getNextEntry()) != null) {

             if (entry.isDirectory()) {
                 throw new SystemRuntimeException(ErrorCode.NORMAL_ERROR_TIPS,"压缩包内不要包含文件夹");
              }
              zis.closeEntry();
           }
          zis.close();
    }catch (IOException e) {
    }
}

小王有问题?

问题1:

        上面代码里为什么用Charset.forName("GBK")?

原因:

        没用抛了异常java.lang.IllegalArgumentException: MALFORMED

拓展:

Charset.forName("GBK") 是 Java 语言中用于获取 GBK 字符集的方法。

GBK 是汉字内码扩展规范的一种,它是 GB2312 字符集的扩展。GBK 包含了 GB2312 中的所有汉字,并且还收录了繁体中文、日文假名、韩文字母等字符,因此它支持多种语言。

在 Java 中,当需要将字符串编码为 GBK 格式或者从 GBK 格式解码字符串时,可以使用 Charset.forName("GBK") 获取 GBK 字符集,然后使用该字符集进行编码或解码操作。例如:

String str = "中国"; byte[] gbkBytes = str.getBytes(Charset.forName("GBK")); // 将字符串编码为 GBK 格式的字节数组 
String gbkStr = new String(gbkBytes, Charset.forName("GBK")); // 将 GBK 格式的字节数组解码为字符串
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上花开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值