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

怎么推广网站北京网站百度推广

怎么推广网站,北京网站百度推广,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.yutouwan.com/news/382309/

相关文章:

  • 哈尔滨市做淘宝的网站泰州市建设局网站
  • 香河做网站shijuewang应用商店oppo版本下载
  • 做企业平台的网站有哪些方面沈阳网站建设024idc
  • 天津做网站的公司有哪家丰都网站建设案例
  • 网站建设普及型个人网页设计图片素材网
  • 企业网站的首页网站备案收费吗
  • 港巢网站建设广西建设网证件查询电子证打印
  • 千博企业网站管理系统营销旗舰版广州冼村为什么叫土豪村
  • 重庆微信企业网站网站建设特效大全
  • 丹东网站设计html网址怎么打开
  • 做交易网站需要多少钱可以做外链的网站
  • 如何进外贸大公司网站在网站做推广要钱吗
  • 白云高端网站建设案例新图闻的合作伙伴
  • 做网站没有活怎么做二十八页美食网站
  • 优秀网站介绍专业商城网站设计
  • 网页制作中网站名称怎么做如何开科技
  • 树在线网页制作网站wordpress 分享至微信
  • 常州网站建设 最易wordpress运行导入器
  • 做网站的需要考什么证书吗深圳企业网站制作哪个
  • 做网站到内容填充需要多久seo外链发布平台
  • 电话开发网站建设话术茂名建站公司
  • 哈尔滨小程序制作公司seo优化网页
  • 网站开发与软件开发区别手机wordpress登陆
  • 织梦系统做网站网站如何交换链接
  • 网站开发员的工资php网站编程
  • 湛江模板建站系统ppt做杂志模板下载网站有哪些
  • c 网站开发视频教程 高清大连app开发制作
  • 在线营销单页网站制作大连装修公司哪家口碑最好
  • 网站开发3687474企鹅编程在线
  • 基于asp.net网站开发视频教程福鼎网站优化公司