大部分代码我是从网上找的,
只有对文件的遍历是我自己写的;

其实原理十分简单

利用yuicompressor已经编好的方法,我们写一个Java程序来调用即可;
yuicompressor-2.4.8.jar封装好的两个类:
JavaScriptCompressor;
CssCompressor;

然后就是底下的程序了:
提醒一句最好把项目插件去掉再来,毕竟那不是自己写的,压缩可能出毛病。

里面的filepath变量是你要执行的目录

另外自己需要new一个新的下面这个类,并执行压缩方法;
ready perfectly!
--------》

package com.cmd;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Arrays;
import java.util.Date;
import java.util.List;import org.mozilla.javascript.ErrorReporter;
import org.mozilla.javascript.EvaluatorException;import com.yahoo.platform.yui.compressor.CssCompressor;
import com.yahoo.platform.yui.compressor.JavaScriptCompressor;public class ZipJs {private static final String encoding = "utf-8";private static final String[] suffixArray = { ".js", ".css" };// 需要压缩的文件夹(会压缩此文件夹下的所有js、css文件)private String filePath = "D:\\myfront";static int linebreakpos = 1000;// -1;换行:负数表示不换行static boolean munge = true;static boolean verbose = false;static boolean preserveAllSemiColons = false;static boolean disableOptimizations = false;static Long count = 0L;/*** 压缩方法*/public void compress() {init(filePath);}// 递归遍历文件夹public static File[] getAllFile(File f) {File[] files = null;if (f.isDirectory()) {files = f.listFiles();for (File fx : files) {if (fx.isDirectory()) {getAllFile(fx);continue;}compress(fx);count++;System.out.println(fx.getName() + "====\n");}}return files;}// 初始化,获取文件目录下的所有需要压缩的文件 js csspublic static void init(String filePath) {Date startTime = new Date();File file = new File(filePath);getAllFile(file);Date endTime = new Date();Long cost = endTime.getTime() - startTime.getTime();System.out.println("压缩完成,耗时:" + cost + "ms,共压缩文件个数:" + count);}// 压缩public static void compress(File file) {try {String fileName = file.getName();String suffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());System.out.println(fileName + "======\n" + suffix);List<String> suffixList = Arrays.asList(suffixArray);if (suffixList.contains(suffix) && !fileName.endsWith("-min" + suffix)) {Reader in = new InputStreamReader(new FileInputStream(file), encoding);// 以UTF-8格式读取,否则压缩出来会乱码String filePath = file.getAbsolutePath();File tempFile = new File(filePath + ".tempFile");Writer out = new OutputStreamWriter(new FileOutputStream(tempFile), encoding);if (fileName.endsWith(".js")) {// js compressorJavaScriptCompressor jscompressor = new JavaScriptCompressor(in, new ErrorReporter() {// 压缩出错后的操作public void warning(String message, String sourceName, int line, String lineSource,int lineOffset) {if (line < 0) {System.err.println("\n[WARNING] " + message);} else {System.err.println("\n[WARNING] " + line + ':' + lineOffset + ':' + message);}}public void error(String message, String sourceName, int line, String lineSource,int lineOffset) {if (line < 0) {System.err.println("\n[ERROR] " + sourceName + "-" + message);} else {System.err.println("\n[ERROR] " + line + ':' + lineOffset + ':' + sourceName + "-" + message);}}public EvaluatorException runtimeError(String message, String sourceName, int line,String lineSource, int lineOffset) {error(message, sourceName, line, lineSource, lineOffset);return new EvaluatorException(message);}});// 开始压缩jscompressor.compress(out, linebreakpos, munge, verbose, preserveAllSemiColons,disableOptimizations);} else if (fileName.endsWith(".css")) {// css compressorCssCompressor csscompressor = new CssCompressor(in);csscompressor.compress(out, linebreakpos);}in.close();out.close();file.delete();tempFile.renameTo(file);tempFile.delete();}} catch (Exception e) {e.printStackTrace();}}}

Java批量完成对文件夹下全部的css与js压缩,利用yuicompressor相关推荐

  1. python批量生成文件夹_python实现批量获取指定文件夹下的所有文件的厂

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  2. Opencv——批量处理同一文件夹下的图片(解决savedfilename = dest + filenames[i].substr(len)问题)

    文章目录 前言 一.完整代码 二.实现效果 前言 第一份代码实现了批量修改同一文件夹下图片的尺寸,有其他需求时仅需修改处理部分的代码以及文件夹路径. 第二份代码实现了批量截取同一文件夹下每张图片的RO ...

  3. Java中如何读取文件夹下的所有文件

    问题:Java中如何读取文件夹下的所有文件 Java里面是如何读取一个文件夹下的所有文件的? 回答一 public void listFilesForFolder(final File folder) ...

  4. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  5. Java io流---拷贝文件夹下的所有文件和目录

    Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...

  6. 批量安装当前文件夹下的exe文件

    在 Windows 中,可以使用批处理脚本(.bat 文件)来批量安装当前文件夹下的 exe 文件. 下面是一个示例脚本,它将在当前文件夹下搜索所有 exe 文件并逐个运行它们: for /r %i ...

  7. 批量处理不同文件夹下同名图片到相同文件内,简单处理

    批量处理不同文件夹下同名图片到相同文件内 第一步:在不同文件夹下搜索同名图片名称 例如在我的多个_json文件夹下存在同名的图片img.png,因此利用搜索功能将所有_json下的img.png图片全 ...

  8. vb怎样同时打开2个excel工作簿_【赠书】不打开工作簿也能批量合并不同文件夹下多个表格的数据...

    最近推送的五篇文章: <偷懒的技术:打造财务Excel达人>到底有多畅销? <偷懒的技术2>推荐序:未来已来,你准备好了吗? 将"偷懒"进行到底,还在到处找 ...

  9. 批量合并同一文件夹下工作簿-1

    描述:同一文件夹下有多个工作簿,且表结构相同,需要把文件夹下的各个工作表的内容合并到同一工作簿中. 在文件夹下新建工作表,在新建工作表下插入宏. 1 sub hbwb() 2 3 dim r as i ...

最新文章

  1. 一篇长文带你在python里玩转Json数据
  2. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
  3. mina与spring集成(翻译)
  4. java怎么防止表单重复提交_如何防止表单重复提交
  5. FxCAD 实验三 实现对象的【属性】事件
  6. 太残忍!麦当劳用毒气室杀鸡
  7. 【ACM】N皇后问题
  8. java如何把方法封装成接口,RxJava配合Retrofit实现网络封装
  9. 华彬 - 华彬讲透孙子兵法(2015年5月22日)
  10. OpenGL调用GPU(七)
  11. easyui textarea IE8中无法换行
  12. eclipse导入Javaweb文件出错解决
  13. css文字上浮div,css文字样式与div
  14. Spring Cloud启动-4-应用监听器ApplicationListener之BootstrapApplicationListener
  15. 前台、前端、后台和后端的区别
  16. LightOJ--1323 Billiard Balls (数学题)
  17. 小程序组件库ColorUI的使用,一键复制粘贴
  18. linux的pacemaker集群
  19. Flutter--Hero组件
  20. 武汉公办专科学校以计算机为特长,专业计算机技术公办学校

热门文章

  1. 条件 推导 迭代 并行
  2. NetworkComms V3 之支持TCP连接和UDP连接
  3. python 模块 wmi 远程连接 windows 获取配置信息
  4. 自学it18大数据笔记-第三阶段Scala-day06——会持续更新……
  5. Mac 如何恢复出厂设置
  6. find 和 DOM遍历孰快孰慢~
  7. CSS选择器详解(一)常用选择器
  8. (转)Linux环境变量的设置和查看方法
  9. MFC Edit控件 error:“DDX_Control”: 不能将参数 3 从“int”转换为“CWnd ”
  10. GitHub之深入解析如何对项目做出贡献