`

file getPath getAbsolutePath getCanonicalPath不同(z)

 
阅读更多

file getPath getAbsolutePath getCanonicalPath不同

 

例子:
1,getPath()与getAbsolutePath()的区别

public static void test1(){
        File file1 
= new File(".\\test1.txt");
        File file2 
= new File("D:\\workspace\\test\\test1.txt");
        System.out.println(
"-----默认相对路径:取得路径不同------");
        System.out.println(file1.getPath());
        System.out.println(file1.getAbsolutePath());
        System.out.println(
"-----默认绝对路径:取得路径相同------");
        System.out.println(file2.getPath());
        System.out.println(file2.getAbsolutePath());
        
    }


得到的结果:

-----默认相对路径:取得路径不同------
.\test1.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt

因为getPath()得到的是构造file的时候的路径。
getAbsolutePath()得到的是全路径
如果构造的时候就是全路径那直接返回全路径
如果构造的时候试相对路径,返回当前目录的路径+构造file时候的路径

2,getAbsolutePath()和getCanonicalPath()的不同

public static void test2() throws Exception{
        File file 
= new File("..\\src\\test1.txt");
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }

得到的结果

D:\workspace\test\..\src\test1.txt
D:\workspace\src\test1.txt

可以看到CanonicalPath不但是全路径,而且把..或者.这样的符号解析出来。
3,getCanonicalPath()和自己的不同。
就是解释这段话:

表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。 

单下边这段代码是看不到结果的,要配合一定的操作来看。下边操作步骤,同时讲解

public static void test3() throws Exception{
        File file 
= new File("D:\\Text.txt");
        System.out.println(file.getCanonicalPath());
    }

步骤:
确定你的系统是Windows系统。
(1),确定D盘下没有Text.txt这个文件,直接执行这段代码,得到的结果是:

D:\Text.txt

注意这里试大写的Text.txt
(2)在D盘下建立一个文件,名叫text.txt,再次执行代码,得到结果

D:\text.txt

同样的代码得到不同的结果。
同时可以对比getAbsolutePath()看看,这个得到的结果是一样的。

原因:
window是大小写不敏感的,也就是说在windows上test.txt和Test.txt是一个文件,所以在windows上当文件不存在时,得到的路径就是按照输入的路径。但当文件存在时,就会按照实际的情况来显示。这也就是建立文件后和删除文件后会有不同的原因。文件夹和文件类似。

三、最后:
1,尝试在linux下执行上边的步骤,两次打印的结果是相同的,因为linux是大小写敏感的系统。
2,手动删掉test.txt,然后尝试执行下边代码

public static void test4() throws Exception{
        File file 
= new File("D:\\Text.txt");
        System.out.println(file.getCanonicalPath());
        File file1 
= new File("D:\\text.txt");
        file1.createNewFile();
        file 
= new File("D:\\Text.txt");
        System.out.println(file.getCanonicalPath());
    }

 

public static void test3() throws Exception{
        File file1 
= new File("D:\\text.txt");
        file1.createNewFile();
        File file 
= new File("D:\\Text.txt");
        System.out.println(file.getCanonicalPath());
    }

执行上边两个函数,看看结果,然后思考一下为什么?
1,的结果是两个大写,
2,的结果试两个小写
连续两个大写的,是否跟上边的矛盾 ?
这是因为虚拟机的缓存机制造成的。第一次File file = new File("D:\\Text.txt");决定了结果.

分享到:
评论

相关推荐

    Java中getPath与getAbsolutePath区别.pdf

    从上面的输出结果可以看到,getPath() 方法返回的是构造 File 对象时候的路径,而 getAbsolutePath() 方法返回的是绝对路径名字符串。如果构造的时候就是绝对路径,那么直接返回绝对路径;如果构造的时候是相对路径...

    File的getPathgetAbsolutePath和getCanonicalPath的不同.pdf

    Java中File类提供了三个相关的方法:getPath、getAbsolutePath和getCanonicalPath,它们都可以获取文件或目录的路径,但是它们的作用和返回结果不同。 getPath方法: getPath方法将抽象路径名转换为一个路径名字符...

    java File类的一些知识

    本文将深入探讨 `File` 类中的 `getPath()`, `getAbsolutePath()`, 和 `getCanonicalPath()` 方法之间的区别及其应用场景。 ### 一、`File` 类简介 `java.io.File` 类是Java标准库中的一个基础类,用于封装文件或...

    java file类的方法

    System.out.println(file.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } ``` 7. **getName()** - 返回该`File`对象所表示的文件或目录的名称。 - **返回值**:一个字符串,表示...

    java 获取当前路径

    需要注意的是,getCanonicalPath() 和 getAbsolutePath() 两个函数的行为有所不同。getCanonicalPath() 函数将返回标准的路径,而 getAbsolutePath() 函数将返回绝对路径。 在使用 File 提供的函数时,需要注意 new...

    Java中获取文件路径的几种方式

    File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f.getAbsolutePath()); // 输出:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin ``` 这段代码会...

    File_java_

    - `getCanonicalPath()`:返回文件的规范路径,解决符号链接和相对路径的问题。 7. **比较和排序**: - `compareTo(File anotherFile)`:根据文件路径进行比较,可用于排序。 `File.java`这个文件可能是实现了...

    对File的各种操作

    `getPath()`, `getCanonicalPath()`和`getAbsoluteFile()`用于获取文件的路径表示形式,`toURI()`和`toURL()`可以将文件转换为URI或URL对象。 在提供的`FileOperator.java`文件中,很可能包含了对这些操作的实现。...

    File类基本用法java-Eclipse

    - `getCanonicalPath()`:返回规范化的路径,消除"."和".."。 5. 文件操作与目录遍历: - `list()` / `listFiles()`:列出当前目录下的所有文件或子目录。`listFiles()`还可以接受一个`FilenameFilter`或`...

    java的file类

    - `getCanonicalPath()`:返回文件的规范路径,处理符号链接和相对路径。 5. **文件列表操作**: - `list()`:返回当前目录下所有文件和目录的名字(字符串数组)。 - `listFiles()`:返回当前目录下所有文件和...

    Java基础知识小结

    2. **file的getPath, getAbsolutePath, getCanonicalPath的不同**: 同上,`getPath()`返回基本路径,`getAbsolutePath()`提供完整绝对路径,`getCanonicalPath()`则处理了路径中的相对引用和符号链接。 3. **int ...

    得到文档路径的几种方法

    通过以上介绍可以看出,`getAbsolutePath()`、`getPath()` 和 `getCanonicalPath()` 这三个方法分别提供了获取绝对路径、相对路径和规范路径的功能。开发者可以根据实际需求选择合适的方法来获取文件或目录的路径。...

    565.563.JAVA基础教程_泛型与File-为什么要使用泛型(565).rar

    4. **路径处理:** `getPath()`、`getAbsolutePath()`和`getCanonicalPath()`分别返回文件的路径、绝对路径和规范路径。 5. **文件I/O操作:** 虽然File类本身并不直接进行文件的读写,但它可以与其他I/O流结合使用...

    笔记17-JAVAEE之文件操作-IO

    6. 文件操作中的常见方法:File 对象的常见方法包括 getParent()、getName()、getPath()、getAbsolutePath()、getCanonicalPath()、exists()、isDirectory()、isFile()、createNewFile() 等。 7. 文件的元信息:...

    Java基础学习27.pdf

    `getPath()`, `getAbsolutePath()`, `getCanonicalPath()`分别获取文件的路径、绝对路径和规范路径;`list()`, `listFiles(FileFilter)`列出目录下的文件和子目录;`listRoots()`则返回系统的根目录列表。 学习Java...

    java中表示一个文件的File类型详解

    - `String getCanonicalPath()`/`getAbsolutePath()`:获取规范化的绝对路径,消除相对路径和符号链接的影响。 ### 路径分隔符 `File`类还定义了两个静态字符变量: - `separatorChar`:表示当前系统中的目录分隔...

    第13章 IO流1

    Java 提供了字节流(处理字节数据)和字符流(处理字符数据)两种类型的流,以及它们的缓冲流、转换流、对象流等多种变体,以适应不同的数据类型和需求。 例如,如果你想要读取一个文本文件,你可以使用 `...

    IO输入输出留

    1 File f=new File("d:/abc") (d:\\abc) 2 File f=new File ("目录","文件名") 创建一个 File 封装对象 可以不存在 方法 -------------------------------------------- 文件、目录属性方法 文件、目录属性 ...

Global site tag (gtag.js) - Google Analytics