相对路径与绝对路径
绝对路径
获得本类的位置:
URL base = this.getClass().getResource("");
如:/home/popeye/testjava/build/classes/net/
根据本类位置获取别的文件的位置
String path = new File(base.getFile(),"../../../"+name).getCanonicalPath();
得到:/home/popeye/testjava/name
相对路径
结构目录–
DecisionTree/src/com/decisiontree/SamplesReader.java
DecisionTree/resource/train.txt,test.txt
SamplesReader.java:
String filepath="resource/train.txt";//注意filepath的内容;
File file=new File(filepath);
java.io默认定位到当前用户目录(“user.dir”)下,即:工程根目录”D:\DecisionTree”下,因此,此时的相对路径(以user.dir为基路径的路径)为resource/train.txt。这样,JVM就可以根据”user.dir”与”resource/train.txt”得到完整的路径(即绝对路径)D:\DecisionTree\resource\train.txt,从而找到train.txt文件。
注意:相对路径的起始处无斜杆”/”;例如:filepath="resource/train.txt";而不是filepath="/resource/train.txt"; //error!
获取”user.dir”:
String rootPath = System.getProperty("user.dir");//rootPath=运行类的根目录