谁可以给我详细讲解一下,下面标注的那5行代码是什么意思?100分赠送哦(我看不懂,可能有点难呀)
class Student{
private String name;
private String path;
public Student(Class s){
String tempPath = s.getProtectionDomain().getCodeSource().getLocation().getFile();//---①
try{
tempPath = java.net.URLDecoder.decode(tempPath,"UTF-8");//---②
}catch(Exception e){
e.printStackTrace();
}
java.io.File jarFile = new java.io.File(tempPath);//---③
this.name=jarFile.getName();
java.io.File parent = jarFile.getParentFile();//---④
if(parent!=null){
this.path=parent.getAbsolutePath();//---⑤
}
}
}
------解决方案--------------------this.path=parent.getAbsolutePath();//---⑤
获取所在文件夹的“绝对路径”
------解决方案--------------------
第一句:得到类s所在的jar包路径;
第二句:使用UTF-8的编码格式输出路径;
第三句:用路径作参数建立文件;
第四句:获得父文件,及上一级文件
第五句:获取绝对路径
------解决方案--------------------
/E:/workspace/myeclipse/workspace/InfoPla/WebRoot/WEB-INF/classes/ //1拿到工程所在目录
/E:/workspace/myeclipse/workspace/InfoPla/WebRoot/WEB-INF/classes/ //2 用utf-8编码转换
classes //3 拿到当前class所在文件夹名
java.io.File parent = jarFile.getParentFile();//---④ 拿到上级目录文件
E:\workspace\myeclipse\workspace\InfoPla\WebRoot\WEB-INF //4 拿到上级目录地址
。。。。其实试下就应该出来了
------解决方案--------------------
① 取入参某Class的所在类路径。目录的话,会取到classes目录(含路径)。jar包的话,会取到jar文件(含路径)。
② 用于还原URL格式编码的中文和特殊字符(如空格)。
③ 取classes目录或jar文件
④ 取classes目录的上级目录或jar文件所在的目录
⑤ 取上述目录的全路径字符串
------解决方案--------------------楼上正确!帮顶
------解决方案--------------------
① 取入参某Class的所在类路径。目录的话,会取到classes目录(含路径)。jar包的话,会取到jar文件(含路径)。
② 用于还原URL格式编码的中文和特殊字符(如空格)。
③ 取classes目录或jar文件
④ 取classes目录的上级目录或jar文件所在的目录
⑤ 取上述目录的全路径字符串
------解决方案--------------------都出来了。。。