最近整理了一下项目中可能需要用到的java路径问题,方便查阅。
/**
* 获得工程根目录
*windows下
*/
public static String getRootPath(){
String path = FileUtil.class.getResource("/../../").toString();
try {
path = java.net.URLDecoder.decode(path, "UTF-8");
path = path.replace("file:/", "");//注意这里
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
/**
*linux下
**/
public static String getRootPathLinux(){
String path = FileUtil.class.getResource("/../../").toString();
try {
path = java.net.URLDecoder.decode(path, "UTF-8");
path = path.replace("file:", "");//少了"/"
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
*******************************************************************************************
system.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.getCanonicalPath());//获取标准的路径
System.out.println(directory.getAbsolutePath());//获取绝对路径
}catch(Exceptin e){}
File.getCanonicalPath()和File.getAbsolutePath()大约只是对于new File(".")和new File("..")两种路径有所区别。
# 对于getCanonicalPath()函数,“."就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹
# 对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径
# 至于getPath()函数,得到的只是你在new File()时设定的路径
比如当前的路径为 C:\test :
File directory = new File("abc");
directory.getCanonicalPath(); //得到的是C:\test\abc
directory.getAbsolutePath(); //得到的是C:\test\abc
direcotry.getPath(); //得到的是abc
File directory = new File(".");
directory.getCanonicalPath(); //得到的是C:\test
directory.getAbsolutePath(); //得到的是C:\test\.
direcotry.getPath(); //得到的是.
File directory = new File("..");
directory.getCanonicalPath(); //得到的是C:\
directory.getAbsolutePath(); //得到的是C:\test\..
direcotry.getPath(); //得到的是..