Java 当文件类与平台无关时,为什么File.isAbsolute()与平台相关?

Java 当文件类与平台无关时,为什么File.isAbsolute()与平台相关?,java,file,Java,File,从文件类JavaDoc: 文件和目录路径名的抽象表示 用户界面和操作系统使用依赖于系统的路径名字符串来命名文件和目录。此类提供了分层路径名的抽象的、独立于系统的视图 为什么方法.isAbsolute()依赖于平台?(在Win和Linux上为/tmp返回不同的结果),并且不检查文件是绝对的还是Linux或Windows?文件类如何通过代码中的文件猜出我试图表示的是哪个平台的文件?我不一定代表本地文件系统的文件。它必须知道您对哪个平台感兴趣,而当前的平台是一个很好的猜测 在Linux上,/tmp是绝

文件
类JavaDoc:

文件和目录路径名的抽象表示

用户界面和操作系统使用依赖于系统的路径名字符串来命名文件和目录。此类提供了分层路径名的抽象的、独立于系统的视图


为什么方法
.isAbsolute()
依赖于平台?(在Win和Linux上为
/tmp
返回不同的结果),并且不检查文件是绝对的还是Linux或Windows?
文件
类如何通过代码中的
文件
猜出我试图表示的是哪个平台的文件?我不一定代表本地文件系统的文件。

它必须知道您对哪个平台感兴趣,而当前的平台是一个很好的猜测


在Linux上,
/tmp
是绝对的。在Windows上它不是-它是相对于您当前的驱动器。

它必须知道您对哪个平台感兴趣,并且当前的平台是一个很好的猜测

在Linux上,
/tmp
是绝对的。在Windows上,它不是-它是相对于您当前的驱动器

我不一定代表本地文件系统的文件

然后,您不应该使用
文件
文件
提供了对本地文件系统的轻松访问,并不表示非本地资源

还有其他与系统无关的类,如,您应该改用(URL有一些设计缺陷,所以更喜欢URI)

我不一定代表本地文件系统的文件

然后,您不应该使用
文件
文件
提供了对本地文件系统的轻松访问,并不表示非本地资源


还有其他与系统无关的类,如,您应该改用它(URL有一些设计缺陷,所以更喜欢URI)。

/tmp在windows中是当前的\u驱动器\u字母:\tmp,不是吗?我认为这个绝对路径与C::tmp@Jan虽然windows会在当前驱动器中搜索相对路径,但它仍然是相对路径。@Jan:
/tmp
在windows中可以引用多个不同的位置,具体取决于当前目录(例如
C:\tmp
D:\tmp
)。我确信这个事实是一个相对的路径。我的感觉是Windows有多个根文件系统,根是驱动器,比如C:,A:如果是这样的话,我仍然会把/TMP视为Windows上的绝对值。否则,您可以说/tmp是相对于linux上的root:)的,但如果有任何澄清,我们将不胜感激here@Joachim有道理。。。但仍然不确信windows中的100%:)/tmp是当前的驱动器号:\tmp,不是吗?我认为这个绝对路径与C::tmp@Jan虽然windows会在当前驱动器中搜索相对路径,但它仍然是相对路径。@Jan:
/tmp
在windows中可以引用多个不同的位置,具体取决于当前目录(例如
C:\tmp
D:\tmp
)。我确信这个事实是一个相对的路径。我的感觉是Windows有多个根文件系统,根是驱动器,比如C:,A:如果是这样的话,我仍然会把/TMP视为Windows上的绝对值。否则,您可以说/tmp是相对于linux上的root:)的,但如果有任何澄清,我们将不胜感激here@Joachim有道理。。。但是仍然没有100%被说服:)javaDoc声明:这个类提供了一个抽象的、与系统无关的层次路径名视图。@Jan Zyka是的,然后它继续讲述了Windows和Unix系统之间路径名的表示方式是如何不同的。只要不混合系统,文件就可以工作,因为路径字符串依赖于系统(这要归功于File.separator)。javaDoc声明:此类提供了分层路径名的抽象、独立于系统的视图。@Jan Zyka是的,然后介绍了Windows和Unix系统之间路径名的表示方式的不同。只要您不混合系统,文件就可以工作,因为路径字符串依赖于系统(多亏了File.separator之类的东西)。