将二维码打成压缩包导出犯过的愚蠢问题!

  需求是这样的,将二维码打包成zip压缩包在本地导出,二维码要根据地市、区县的信息来用文件夹分别保存。   于是我就想用递归来创建文件夹,再将文件夹递归读进zip的输出流中,实在是太笨了。  

  原来直接可以在二维码文件名称加上 “文件夹名字/” 就可以生成文件夹了, 也不需要递归读进zip的输出流了。

 byte[] qrcodeBytes = FileStoreUtils.getStoreService().downloadFile(imgShareLinkDTO.getImgQcodeFileId());//获取二维码字节流
if (qrcodeBytes != null) {
// 写入二维码
String filename = generateQrCodeFilename(machinePanChannelDTO, phoneNumber);
zos.putNextEntry(new ZipEntry(filename));
IOUtils.write(qrcodeBytes, zos);
}

 

/**
* 生成二维码文件名
*
* 文件名包含多级路径,格式为 地市/区县/承包单元/代理商编码-代理商名称/手机号.png
*/
private String generateQrCodeFilename(MachinePanChannelDTO dto, String phoneNumber) {
StringBuilder sb = new StringBuilder();
// 地市
if (dto.getLanId() == null) {
sb.append("其它/");
} else {
String cityName = attrValueCache.getUnchecked(Pair.of("DC_CITY_CODE", dto.getLanId().toString()));
sb.append(StringUtils.defaultIfEmpty(cityName, "其它")).append("/");
}
// 区县
if (dto.getAreaId() == null) {
sb.append("其它/");
} else {
String areaName = attrValueCache.getUnchecked(Pair.of("DC_AREA_CODE", dto.getAreaId().toString()));
sb.append(StringUtils.defaultIfEmpty(areaName, "其它")).append("/");
}
// 承包单元
sb.append(StringUtils.defaultIfEmpty(dto.getToUnit(), "其它")).append("/");
// 代理商
sb.append(StringUtils.defaultIfEmpty(dto.getAgentCode(), "其它"))
.append("-")
.append(StringUtils.defaultIfEmpty(dto.getAgentName(), "其它"))
.append("/");
// 手机号
sb.append(phoneNumber);
sb.append(".png");

return sb.toString();
}

转载于:https://www.cnblogs.com/yz520/p/10646904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值