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

网站建设企业有哪些内容东营网站建设天锐科技

网站建设企业有哪些内容,东营网站建设天锐科技,wordpress 多语言 站点,wordpress爆破密码字典目录 一、前言 二、代码示例 新建FileModel.java 实体 Main.java 代码#xff1a; 三、展示效果 四、最后 一、前言 今天给大家分享一个J自己写的ava实战的小案例#xff0c;主要功能是实现指定一个文件夹#xff0c;然后分组压缩里面的文件。其实这个案例还是有一定用… 目录 一、前言 二、代码示例 新建FileModel.java 实体 Main.java 代码 三、展示效果 四、最后 一、前言 今天给大家分享一个J自己写的ava实战的小案例主要功能是实现指定一个文件夹然后分组压缩里面的文件。其实这个案例还是有一定用途的比如日志文件夹里面有几千个文件如果我需要给每个压缩包指定10M把整个文件夹里面的日志文件都进行压缩这个案例就能够用得上了。 废话少说直接上代码。我这边采用的是最基本的控制台程序主要还是代码的逻辑有一定的借鉴意义。欢迎大家互相交流学习如有不妥之处欢迎指正 说明暂时未考虑文件夹里面还有文件夹的情况。 二、代码示例 新建FileModel.java 实体 主要指定文件名以及文件大小方便按照大小分组的时候使用。 public class FileModel {public FileModel(String name, double fileSize) {this.name name;this.fileSize fileSize;}// 文件名public String name;// 文件大小KBpublic double fileSize;public String getName() {return name;}public void setName(String name) {this.name name;}public double getFileSize() {return fileSize;}public void setFileSize(double fileSize) {this.fileSize fileSize;} } Main.java 代码 文件夹中文件分组大小采用了递归的方式。 为了实现效果代码都放在了Main.java里面。 具体代码都有注释直接看注释就行。 private static final double FILE_SIZE5500; // 指定分组压缩的大小 550KBprivate static final String PATHD:\\Test; // 指定要处理的文件夹public static void main(String[] args) {ListFileModel list getFiles(PATH);HashMapDouble, ListFileModel map new HashMap();getArr(list,FILE_SIZE,map);if(map.size()0){for (Double aDouble : map.keySet()) {ListFileModel fileModels map.get(aDouble);batchZipFiles(fileModels,PATH\\aDouble.toString().zip);}}System.out.println(map);}// 递归方式实现文件分组private static void getArr(ListFileModel list, double fileSize,MapDouble, ListFileModel map) {ListFileModel listAdd new ArrayList();if (list.size() 0) {for (FileModel fileModel : list) {if (listAdd.size() 0) {listAdd.add(fileModel);} else {if (listAdd.stream().mapToDouble(FileModel::getFileSize).sum() fileSize) {listAdd.add(fileModel);if(listAdd.size()list.size()){map.put(listAdd.stream().mapToDouble(FileModel::getFileSize).sum(), listAdd);}} else {// 取差集list list.stream().filter(item - !listAdd.contains(item)).collect(Collectors.toList());map.put(listAdd.stream().mapToDouble(FileModel::getFileSize).sum(), listAdd);getArr(list,fileSize,map);break;}}}}}//读取文件夹获取里面文件的名字尺寸 不考虑嵌套文件夹private static ListFileModel getFiles(String path) {ListFileModel files new ArrayListFileModel();File file new File(path);File[] tempList file.listFiles();if (tempList ! null tempList.length 0) {for (File value : tempList) {if (value.isFile()) {// System.out.println(value.getName() : getFileSizeString(value.length()));files.add(new FileModel(value.getName(), getFileSizeKB(value.length())));}}}return files;}// 获取文件大小KBprivate static double getFileSizeKB(Long size) {double length Double.parseDouble(String.valueOf(size));return length / 1024.0;}// 返回文件大小尺寸private static String getFileSizeString(Long size) {double length Double.parseDouble(String.valueOf(size));//如果字节数少于1024则直接以B为单位否则先除于1024后3位因太少无意义if (length 1024) {return length B;} else {length length / 1024.0;}//如果原字节数除于1024之后少于1024则可以直接以KB作为单位//因为还没有到达要使用另一个单位的时候//接下去以此类推if (length 1024) {return Math.round(length * 100) / 100.0 KB;} else {length length / 1024.0;}if (length 1024) {//因为如果以MB为单位的话要保留最后1位小数//因此把此数乘以100之后再取余return Math.round(length * 100) / 100.0 MB;} else {//否则如果要以GB为单位的先除于1024再作同样的处理return Math.round(length / 1024 * 100) / 100.0 GB;}}/*** 压缩指定文件夹中的所有文件生成指定名称的zip压缩包** param list 需要压缩的文件名称列表(包含相对路径)* param zipOutPath 压缩后的文件名称**/public static void batchZipFiles(ListFileModel list, String zipOutPath) {ZipOutputStream zipOutputStream null;WritableByteChannel writableByteChannel null;MappedByteBuffer mappedByteBuffer null;try {zipOutputStream new ZipOutputStream(new FileOutputStream(zipOutPath));writableByteChannel Channels.newChannel(zipOutputStream);File file new File(PATH);File[] tempList file.listFiles();ListString fileList list.stream().map(FileModel::getName).collect(Collectors.toList());File[] addListnew File[fileList.size()];assert tempList ! null;for (File file1 : tempList) {if(fileList.contains(file1.getName())){long fileSize file1.length();//利用putNextEntry来把文件写入zipOutputStream.putNextEntry(new ZipEntry(file1.getName()));long read Integer.MAX_VALUE;int count (int) Math.ceil((double) fileSize / read);long pre 0;//由于一次映射的文件大小不能超过2GB所以分次映射for (int i 0; i count; i) {if (fileSize - pre Integer.MAX_VALUE) {read fileSize - pre;}mappedByteBuffer new RandomAccessFile(file1, r).getChannel().map(FileChannel.MapMode.READ_ONLY, pre, read);writableByteChannel.write(mappedByteBuffer);pre read;}}}assert mappedByteBuffer ! null;mappedByteBuffer.clear();} catch (Exception e) {} finally {try {if (null ! zipOutputStream) {zipOutputStream.close();}if (null ! writableByteChannel) {writableByteChannel.close();}if (null ! mappedByteBuffer) {mappedByteBuffer.clear();}} catch (Exception e) {}}}三、展示效果 最终运行效果如下 四、最后 本案例实现了指定分组大小压缩的功能仅供参考学习交流欢迎大神指正提出更好的算法。高手勿喷
http://www.pierceye.com/news/472139/

相关文章:

  • 做网站留后门是怎么回事视频网站开发需求分析
  • 关于做网站的了解点电子商务应用平台包括哪些
  • 垂直门户网站都有什么网站首页index.html
  • wordpress网站加载效果线上推销的方法
  • 网站都有什么语言杭州网络营销公司
  • 济南高新网站制作正规seo排名外包
  • 网站方案讲解技巧ppt的免费网站
  • 个人网站名称有哪些WordPress dux修改
  • 普法网站建设方案app制作开发公司怎么收费
  • 网站平台建设哪家公司好网站建设建站在线建站
  • 龙岗区住房和建设局在线网站网站如何做团购
  • 河南省建设监理协会网站证书查询wordpress 修改链接
  • 做网站业务员怎么样深圳福田最新新闻事件
  • 衡水商城网站建设外贸汽车配件做那个网站
  • 做网站的色彩搭配的小知识群艺馆网站建设方案
  • 深圳 汽车网站建设学习网站建设培训
  • 制作手机网站用什么软件唐山网站专业制作
  • 网站后台如何登陆互联网营销中心
  • 做排行榜的网站知乎长沙服务好的网络营销
  • 做网站猫要做端口映射吗太原网站建设口碑推荐
  • 新闻门户网站是什么快速搭建网页
  • 随意设计一个网站域名是什么?
  • 找人做网站需要准备什么材料用视频做网站背景
  • 大连做网站首选领超科技wordpress注册邮件发送设置
  • 西山区城市建设局网站如何做防水网站
  • 商务网站建设的组成包括自动链接 wordpress
  • 网站如何关闭东莞网站开发推荐
  • 自己开网站能赚钱吗网站界面设计描述
  • 二手交易网站建设方案ppt网站备案的作用
  • 北京行业网站建设临沂谁会做网站