Web 静态文件版本升级代码
生活随笔
收集整理的這篇文章主要介紹了
Web 静态文件版本升级代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.UnsupportedEncodingException;
public class SaasVersion {
//升級版本 private static final String v = "1.1";//文件夾的絕對路徑 private static final String[] pkgUrls = {"D:/workspace/yz.saas/WebContent/views/assets/" };//要進行版本升級的資源文件 public static String[] pats = {".js",".css",".html"};public static void main(String[] args) {if (pkgUrls.length == 0) {return;}for (int k = 0; k < pkgUrls.length; k++) {isFileAndDirectory(pkgUrls[k]);} }//判斷是file還是目錄; //如果是目錄,目錄下所有的文件,迭代處理; //如果是文件,則直接做版本替換處理,完事后刪除原文件,把備份文件修改成原文件 private static void isFileAndDirectory(String url) {File f = new File(url);if (f.isDirectory()) {File[] childUrls = f.listFiles();if (null == childUrls || childUrls.length == 0) {return;} else {for (File dirf : childUrls) {isFileAndDirectory(dirf.getAbsolutePath());}}} else {changeVersion(url);deleteAndRename(url);} }//修改版本的業務代碼 private static void changeVersion(String url) {BufferedReader br = null;PrintWriter pw = null;try {//處理原始文件File f = new File(url);if(!f.exists()) {System.err.println("===============>文件不存在:url=" + url);}if (f.isDirectory()) {System.err.println("===============>不能是文件夾:url=" + url);}//創建備份文件String tmpUrl = url + ".bak";File tmpFile = new File(tmpUrl);pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tmpFile), "UTF-8"));//將要處理的文件,按行處理到緩存里面br = new BufferedReader(new InputStreamReader(new FileInputStream(f),"UTF-8"));String inputStr; while ((inputStr = br.readLine()) != null) { int patLength = 0;String pat = "";for (int j = 0; j < pats.length; j++) {pat = pats[j];patLength = pat.length();if (inputStr.contains(pat)) {int patIndex = inputStr.indexOf(pat);String patNextChar = inputStr.substring(patIndex + patLength,patIndex + patLength + 1);//如果*.js,*.css,.*.html 后面,不是引號或者問號; 說明不是帶參或者無參,可能是方法; 比如*.html(),*.css("style","...")if ("\"".equals(patNextChar) || "\'".equals(patNextChar)|| "?".equals(patNextChar)) {String str1 = inputStr.substring(0,patIndex + patLength);String str11 = inputStr.substring(patIndex + patLength);int leftIndex = 0;int index1 = str11.indexOf("\'");int index2 = str11.indexOf("\"");if (index1 == -1 && index2 != -1) {leftIndex = index2;} else if (index1 != -1 && index2 == -1) {leftIndex = index1;} else {leftIndex = index1 < index2 ? index1 : index2;}//開始替換String str2 = str11.substring(0,leftIndex + 1);String str3 = str11.substring(leftIndex + 1);//str2 部分,是需要替換的路徑部分if (str2.contains("?") && str2.contains("v=")) {//url后面已經有版本號int vLen = "v=".length();int midIndex = str2.indexOf("v=");String lastStr = str2.substring(midIndex + vLen);int lastLen = lastStr.length();if (lastStr.contains("&")) {str2 = str2.substring(0,midIndex + vLen) + v + lastStr.substring(lastStr.indexOf("&"));} else {str2 = str2.substring(0,midIndex + vLen) + v + lastStr.substring(lastLen - 1);}} else if (str2.contains("?") && !str2.contains("v=") ) {//url后面沒有版本號,但有其他內容//eg: url="xxxx.html?cno=" + data.cno;int wenHaoIndex = str2.indexOf("?");String str21 = str2.substring(0,wenHaoIndex + 1);String str22 = str2.substring(wenHaoIndex + 1);str2 = str21 + "v=" + v + "&" + str22;} else if(!str2.contains("?") && !str2.contains("v=") ) {//url后面沒有版本號,也沒有?str2 = "?v=" + v + str11.substring(leftIndex,leftIndex+1);}inputStr = str1 + str2 + str3;System.out.println("===============>inputStr=" + inputStr);System.out.println();}}}//換行inputStr += "\r\n";//寫出文件,并且強制輸出pw.write(inputStr);pw.flush();}} catch (UnsupportedEncodingException e) {System.err.print(e);} catch (FileNotFoundException e) {System.err.print(e);} catch (IOException e) {System.err.print(e);} finally {try {if (br != null) {br.close();}if (pw != null) {pw.close();}} catch (IOException e) {System.err.print(e);}} }//刪除原文件和重命名備份文件的方法 private static void deleteAndRename(String url) {String bakUrl = url + ".bak";//處理原始文件File f = new File(url);f.delete();File bakf = new File(bakUrl);bakf.renameTo(new File(url)); }}
轉載于:https://my.oschina.net/u/2611678/blog/1816248
總結
以上是生活随笔為你收集整理的Web 静态文件版本升级代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS函数表达式——函数递归、闭包
- 下一篇: WebVie打开woffice文档