File中isFile与exists与isDirectory与getPath与getAbsolutePath与getCanonicalPath区别

isFile()
public boolean isFile()测试此抽象路径名表示的文件是否是一个标准文.如果该文件不是一个目录,并且满足其他与系统有关的标准,那么该文件是标准文件.由Java应用程序创建的所有非目录文件一定是标准文件.
返回:当且仅当此抽象路径名表示的文件存在且是一个标准文件时,返回true;否则返回false; 
抛出:SecurityException,如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件进行读访问.

exists()
public boolean exists()测试此抽象路径名表示的文件或目录是否存在.
返回:当且仅当此抽象路径名表示的文件或目录存在时,返回true;否则返回false;
抛出:SecurityException如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒绝对文件或目录进行写访问.

isFile():判断是否文件,也许可能是文件或者目录

exists():判断是否存在,可能不存在

isDirectory():判断一个对象是否是文件夹。返回值是boolean类型的。如果是则返回true,否则返回false

getPath():

基本语法:public String getPath(),直接返回此抽象路径名的路径名字符串。

注意:返回的是定义时的路径,可能是相对路径,也可能是绝对路径,这个取决于定义时用的是相对路径还是绝对路径。如果定义时用的是绝对路径,那么使用getPath()返回的结果跟用getAbsolutePath()返回的结果一样

getAbsolutePath():

基本语法:public String getAbsolutePath(),返回此抽象路径名的绝对路径名字符串。

注意:①如果这个抽象路径名已经是绝对的,那么路径名字符串就像getPath()方法一样简单地返回。

          ②如果此抽象路径名为空抽象路径名,则返回由系统属性user.dir命名的当前用户目录的路径名字符串。

          ③否则,该路径名以系统相关的方式解决。

          ④返回的是定义时的路径对应的相对路径,但不会处理“.”和“..”的情况

getCanonicalPath():

基本语法:public String getCanonicalPath() throws IOException,返回此抽象路径名规范化后的路径名字符串。

注意:此方法首先将此路径名转换为绝对形式,就像调用getAbsolutePath()方法一样,然后以系统相关的方式将其映射到其唯一的形式。 这通常包括从路径名中删除冗余名称,例如"."和".." 

例如:path:test/.././test.txt

getPath():  test\..\.\test.txt
getAbsolutePath():     C:\projects\sandbox\trunk\test\..\.\test.txt
getCanonicalPath() :   C:\projects\sandbox\trunk\test.txt
由此可得出结论:

getPath() 方法跟创建 File 对象时传入的路径参数有关,返回构造时传入的路径
getAbsolutePath() 方法返回文件的绝对路径,如果构造的时候是全路径就直接返回全路径,如果构造时是相对路径,就返回当前目录的路径 + 构造 File 对象时的路径
getCanonicalPath() 方法返回绝对路径,会把 ..\ 、.\ 这样的符号解析掉

你可能感兴趣的:(java)