归档功能之CSS归档

因项目需要,对内部信息化系统进行前端文件的归档,CSS文件归档,伴随着图像URL的变化,因系统中CSS中含url:(../UI/images/excel.jpg)之类的相对路径。

故此需要对此类情况进行替换,在该功能中有三个已知的参数:

1、原CSS的绝对路径

2、CSS文件中背景图像的URL

3、CSS归档后的绝对路径

 

代码如下:

/*******************************************************************************
 * $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";
		
		/* 
		 * 1、获取图像的绝对路径
		 * 2、比较源路径和目的路径的层次
		 * 3、得出最后的图像的相对路径
		 */
		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());
	}
}

  

posted on 2015-02-09 19:02  画一个圆圈  阅读(246)  评论(0编辑  收藏  举报

导航