青龙建站教程自学网,北京住房和城乡建设部网站,有哪些网站是做分期付款的,手机如何制作链接File API在Java中非常重要#xff0c;因为它使文件系统可以访问Java程序。 尽管Java的文件API丰富#xff0c;但是使用它们时仍需要了解许多细节。 关于文件路径的常见查询程序员之一是getPath() #xff0c; getCanonicalPath()和getAbsolutePath()方法之间的区别#xff… File API在Java中非常重要因为它使文件系统可以访问Java程序。 尽管Java的文件API丰富但是使用它们时仍需要了解许多细节。 关于文件路径的常见查询程序员之一是getPath() getCanonicalPath()和getAbsolutePath()方法之间的区别为什么有三种获取文件路径的方法以及如果调用getPath代替getCanonicalPath会发生什么情况 。 顺便说一下在了解getPathgetAbsolutePath和getCanonicalPath之间的区别之前让我们了解这些方法背后的概念即pathabsolute path和canonical path之间的区别 。 通常路径是到达文件系统中特定文件或目录的方式它可以是绝对路径也称为完整路径也可以是相对于当前位置的相对路径。 绝对路径定义了从文件系统的根目录例如Windows中的C\\或D\\以及从/的基于UNIX的操作系统例如Linux或Solaris中的路径。 规范路径有些棘手因为所有规范路径都是绝对的反之亦然 。 它实际上定义了从文件系统根目录到文件的唯一绝对路径。 例如C//temp/names.txt是Windows中names.txt的规范路径而/home/javinpaul/test/names.txt是Linux中的规范路径。 另一方面同一文件可以有很多绝对路径包括刚刚看到的规范路径。 例如Windows中另一个指向同一文件的绝对路径可以是C//temp/./names.txt;。 类似地在UNIX / home / javinpaul / test /./ names.txt中是同一文件的另一个绝对路径。 所以可以这样说绝对路径可能包含元字符之类的。 和..代表当前目录和父目录。 在本文的其余部分我们将通过查看特定文件返回的值来了解getPathgetAbsolutePath和getCanonical路径之间的区别。 在UNIXWindowsLinux或任何文件系统中处理文件时您通常会听到术语绝对规范和相对路径。 这是在脚本或程序中引用任何特定文件的三种常用方法。 如果您是一名程序员则编写脚本那么您就会知道使用绝对路径如何使您的脚本僵化和不灵活使用绝对路径实际上是无效的而众所周知脚本中的硬编码路径是程序员字典中不良的编码实践之一。 。 绝对路径是指向特定文件例如C\ temp \ abc.txt的完整路径。 绝对路径名的定义也取决于系统。 在UNIX系统上如果路径名的前缀是“ /”则它是绝对的。 在Win32系统上如果路径名的前缀是驱动器说明符后跟“ \\”或者其前缀是“ \\”则该路径名是绝对路径。 例如我们有两个目录temp和temp1而test.txt文件位于temp目录中。 C:\tempC:\temp1 在Windows下的Java中您可能具有以下可能的绝对路径它们引用同一文件test.txt。 C:\temp\test.txtC:\temp\test.txt
C:\temp\TEST.TXT
C:\temp\.\test.txt
C:\temp1\..\temp\test.txt 另一方面相对路径是相对于您所在目录的目录称为当前目录。 因此如果您在上述目录中则如果将文件test.txt作为相对目录引用则它假定您所在的目录相同。当执行../时它将返回一个目录也称为父目录。 规范路径要难一些。 对于初学者所有规范路径都是绝对路径但并非所有绝对路径都是规范路径。 系统上存在的单个文件可以具有许多引用该文件的路径但是只有一个规范路径。 Canonical为给定文件提供了唯一的绝对路径。 如何实现这一点的细节可能取决于系统。 对于上面的示例我们只有一个规范路径C\ temp \ test.txt请记住在Java中您可以使用路径分隔符来使用UNIX样式的正斜杠/或者甚至可以使用file获取操作系统路径分隔符。分隔符系统属性是编写真正与平台无关的Java应用程序的关键 。 一旦您了解了绝对路径规范路径和相对路径之间的区别就很容易区分这三种方法因为它们实际上返回的是路径绝对路径和规范路径。 简而言之这是它们之间的主要区别 第一个方法getPath返回一个String该String表示用于创建关联的File对象的路径并且它可能相对于当前目录。 第二种方法getAbsolutePath根据当前目录如果是相对目录将其解析后返回路径字符串从而生成完全限定的路径。 第三种方法getCanonicalPath在针对当前目录解析任何相对路径后返回路径字符串并删除任何相对路径元素例如。和..以及任何文件系统链接以返回文件系统认为是规范的路径表示引用它指向的文件系统对象。 还要记住以上两个方法中的每个方法都有一个File等效项该等效项返回相应的File对象例如getAbsoluteFile和getCanonicalFile它们返回相同的内容。 下面的示例说明如何在同一文件中有许多不同的路径和绝对路径它们都具有完全相同的规范路径。 因此如果您想知道两个不同的路径是否指向同一文件则规范路径很有用。 import java.io.File;/*** Java program to show difference between path, absolute path and canonical* path related to files in Java. File API provides three methods to* java.io.File class getPath(), getAbsolutePath() and getCanonicalPath() and* this program just explain what those method returns.** author Javin Paul*/
public class PathDemo {public static void main(String args[]) {System.out.println(Path of the given file :);File child new File(.././Java.txt);displayPath(child);File parent child.getParentFile();System.out.println(Path of the parent file :);displayPath(parent);}public static void displayPath(File testFile) {System.out.println(path : testFile.getPath());System.out.println(absolute path : testFile.getAbsolutePath());try {System.out.println(canonical path : testFile.getCanonicalPath());} catch (Exception e) {e.printStackTrace();}}}Output:
Path of the given file :
path : ..\.\Java.txt
absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\.\Java.txt
canonical path : C:\Users\WINDOWS 8\workspace\Java.txtPath of the parent file :
path : ..\.
absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\.
canonical path : C:\Users\WINDOWS 8\workspace 这就是Java中的getPathgetAbsolutePath和getCanonicalPath之间的区别。 在课程中我们还了解了路径绝对路径和规范路径之间的区别。 您需要记住的是getPath为您提供了创建File对象的路径该路径可能是相对的也可能不是相对的。 getAbsolutePath给出文件的绝对路径 getCanonicalPath为您提供文件的唯一绝对路径。 值得注意的是可能有大量指向同一文件的绝对路径但只有一个规范路径。 翻译自: https://www.javacodegeeks.com/2014/08/difference-between-getpath-getcanonicalpath-and-getabsolutepath-of-file-in-java.html