java YUI压缩JS和CSS
项目需要压缩JS和CSS,文件和文件夹太多,一一处理又比较麻烦,写个程序吧:
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 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 TestJsZip {//要处理的目录static File dir=new File("E:\\js");static int linebreakpos = -1;static boolean munge=true;static boolean verbose=false;static boolean preserveAllSemiColons=false;static boolean disableOptimizations=false;public static void main(String[] args) throws Exception{checkFile(dir);}public static void checkFile(File file) throws Exception{File[] files=file.listFiles();if(files==null||files.length==0)return;for(File f:files){if(f.getName().endsWith(".svn")){continue;}if(f.isFile()){jsZip(f);System.out.println("文件==="+f.getName());continue;}else{System.out.println("目录=="+f.getName());checkFile(f);}}}public static void jsZip(File file) throws Exception{String fileName=file.getName();if(!fileName.endsWith(".js")&&!fileName.endsWith(".css")){return;}Reader in = new InputStreamReader(new FileInputStream(file),"utf-8");String filePath=file.getAbsolutePath();File tempFile=new File(filePath+".tempFile");Writer out = new OutputStreamWriter(new FileOutputStream(tempFile),"utf-8");if(fileName.endsWith(".js")){JavaScriptCompressor 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] " + message); } else { System.err.println("\n[ERROR] " + line + ':' + lineOffset + ':' + 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")){ CssCompressor csscompressor = new CssCompressor(in); csscompressor.compress(out, linebreakpos);}out.close();in.close();file.delete();tempFile.renameTo(file);tempFile.delete();}}
?