1
/** *//**
2
* 取得当前执行程序使用的classpath
3
* @author snoics
4
* @param theclass Class
5
* @param path "" or "/"
6
* @param encoding 如果encoding==null将默认使用utf-8进行解码
7
* @return String
8
*/
9
public static String getRealPath(Class theclass,String path,String encoding)
{
10
String realpath="";
11
if(encoding==null)
{
12
encoding="utf-8";
13
}
//如果path==null则把它设置为""
14
path=getString(path);
15
if(path.equals(""))
{
16
path="/";
17
}
18
String jarflag="";
19
String classflag="";
20
21
String window_jarflag="jar:file:/";
22
String window_classfalg="file:/";
23
24
String other_jarflag="jar:file:";
25
String other_classflag="file:";
26
27
String endstring="!";
28
String systemtype="";
29
30
String systemtype_windows="WINDOWS";
31
32
String pachnamestringendstring="package ";
33
34
String packagestring=theclass.getPackage().toString();
35
36
packagestring=packagestring.substring(pachnamestringendstring.length());
37
packagestring=getSpecialReplaceString(packagestring,".","/");
38
39
String packagestringtemp=packagestring+"/";
40
41
realpath=theclass.getResource(path).toString();
42
try
{
43
realpath=URLDecoder.decode(realpath,encoding);
44
}catch(Exception e)
{
45
e.printStackTrace() ;
46
}
47
48
systemtype=System.getProperty("os.name").toUpperCase().trim();
49
50
if(systemtype.startsWith(systemtype_windows))
{
51
jarflag=window_jarflag;
52
classflag=window_classfalg;
53
}else
{
54
jarflag=other_jarflag;
55
classflag=other_classflag;
56
}
57
58
if(realpath.length()>=jarflag.length())
{
59
String flagstring="";
60
flagstring=realpath.substring(0,jarflag.length());
61
if(!flagstring.equals(jarflag))
{
62
flagstring=realpath.substring(0,classflag.length());
63
}
64
if(flagstring.equals(jarflag))
{
65
realpath=realpath.substring(jarflag.length());
//取得realpath中从开始到最后一个endstring字符串之前的
66
realpath=StringClass.getPreString(realpath,endstring);
//取得realpath中从开始到最后一个"/"字符串之前的
67
realpath=StringClass.getPreString(realpath,"/")+"/";
68
}else
{
69
realpath=realpath.substring(classflag.length());
70
if(realpath.length()>packagestringtemp.length())
{
71
String subrelapath=realpath.substring(realpath.length()-packagestringtemp.length());
72
if(subrelapath.equals(packagestringtemp))
{
//取得realpath中从开始到最后一个packagestring字符串之前的
73
realpath=StringClass.getPreString(realpath,packagestring);
74
}
75
}
76
}
77
}else if((realpath.length()>=classflag.length())&&(realpath.length()<jarflag.length()))
{
78
realpath=realpath.substring(classflag.length());
79
if(realpath.length()>packagestringtemp.length())
{
80
String subrelapath=realpath.substring(realpath.length()-packagestringtemp.length());
81
if(subrelapath.equals(packagestringtemp))
{
//取得realpath中从开始到最后一个packagestring字符串之前的
82
realpath=StringClass.getPreString(realpath,packagestring);
83
}
84
}
85
}
//返回经过格式化的路径,把"\"全部替换为"/"
86
return StringClass.getFormatPath(realpath);
87
}
88
posted on 2005-11-11 09:06
snoics 阅读(757)
评论(0) 编辑 收藏 所属分类:
学习 . 感悟