歸檔功能之CSS歸檔

因項目須要,對內部信息化系統進行前端文件的歸檔,CSS文件歸檔,伴隨着圖像URL的變化,因系統中CSS中含url:(../UI/images/excel.jpg)之類的相對路徑。css

故此須要對此類狀況進行替換,在該功能中有三個已知的參數:前端

一、原CSS的絕對路徑java

二、CSS文件中背景圖像的URLapp

三、CSS歸檔後的絕對路徑ui

 

代碼以下:url

/*******************************************************************************
 * $Header$
 * $Revision$
 * $Date$
 *
 *==============================================================================
 *
 * Copyright (c) 2001-2006 Primeton Technologies, Ltd.
 * All rights reserved.
 * 
 * Created on 2015-2-9
 *******************************************************************************/


package org.gocom.bpm.platform.test;


/**
 * 
 * 
 * 2015-2-9 上午09:07:35
 */
public class ImagePathMatch {

	public static void main(String[] args) {
		String src = "/eos-default/UI/style/commons.css";
		String image = "../images/null.gif" ;
		String dest = "/eos-default/UI/archive/UI/style/commons.css";
		
		/* 
		 * 一、獲取圖像的絕對路徑
		 * 二、比較源路徑和目的路徑的層次
		 * 三、得出最後的圖像的相對路徑
		 */
		String[] arrSrc = src.split("/");
		String[] arrImage = image.split("/");
		int i=arrSrc.length,j=arrImage.length;
		int p = 0,q=1;
		StringBuilder sb = new StringBuilder(128);
		sb.append("/");
		for(int k=0;k<j;k++){
			if(arrImage[k].equals("..")){
				p+=1 ;
			}
		}
		while((q+p*2)<i){
			sb.append(arrSrc[q++]).append("/");
		}
		while(p<j){
			sb.append(arrImage[p++]);
			if(p<j)
				sb.append("/");
		}
		System.out.println(sb.toString());
		String midPath = sb.toString() ;
		sb.delete(0, sb.length());
		String[] arrMid = midPath.split("/");
		String[] arrDest = dest.split("/");
		boolean flag = true ;
		q =0 ;
		while(flag){
			if(arrMid[q].equals(arrDest[q]))
				q ++ ;
			else 
				flag = false;
		}
		p  = arrDest.length ;
		int s = q ;
		while(q<p){
			sb.append("..").append("/");
			q ++ ;
		}
		p = arrMid.length;
		s = s-1 ;
		while(s<p){
			sb.append(arrMid[s++]);
			if(s < p) sb.append("/");
		}
		
		System.out.println(sb.toString());
	}
}
相關文章
相關標籤/搜索