2011-03-01 31 views
1

我的Java应用程序可以在所有平台上运行。它正在使用Linux上FTP服务器上的一些远程文件。为了在FTP上导航,我使用绝对路径,如/home/user。如果我创建一个File,如:需要File.isAbsolute()才能使用UNIX文件系统的平台独立应用程序

File f = new File("/home/user"); 

然后调用的结果:

f.isAbsolute(); 

似乎是依赖于平台。但是由于我总是使用远程UNIX文件系统工作,所以在这种情况下,我总想得到true。有没有任何内置的Java方式如何确定文件是绝对的unix平台上?

当然,我可以编写一个帮助器方法,看看文件名是.startsWith("/"),但我正在寻找一些内置的java解决方案。

回答

2

是否有任何内置的java方式如何识别unix平台上的文件是绝对的?

没有,没有“将绝对在UNIX平台上” - 方法标准的API中。

据为File的文档虽然,做.startsWith("/")对应于为File.isAbsolute在UNIX平台上的实现:

[...] 在UNIX系统上,一个是绝对路径,如果它的前缀“/”。 [...]

因此,这可能是我在这种情况下会采取的解决方案。

+0

明白了这一点,并且将这种解决方案可能会去,但是从文件的javadoc:“用户界面和操作系统使用与系统相关的路径名字符串来命名文件和目录,这个类表示一个抽象的,与系统无关的视图分层路径名称“。如果File是系统独立的,为什么它是绝对方法系统依赖的? – 2011-03-01 12:38:28

+0

这是一个非常好的问题。说实话,我实际上考虑提交关于该句子的文档错误报告。 – aioobe 2011-03-01 12:43:16

0

不知道它是否对您的问题有帮助,但也可以从File API中使用方法来区分文件路径。

File getAbsoluteFile() 
     Returns the absolute form of this abstract pathname. 
String  getAbsolutePath() 
     Returns the absolute pathname string of this abstract pathname. 
File getCanonicalFile() 
     Returns the canonical form of this abstract pathname. 
String  getCanonicalPath() 
     Returns the canonical pathname string of this abstract pathname. 
+0

这些方法的实现与系统有关。另外'getCanonicalFile()'只有在本地系统上存在路径名指示的文件时才能完全工作。 – 2011-03-01 12:41:46

+0

@Joachim:嗯,在这种情况下它不会真的有帮助... – posdef 2011-03-01 12:47:48

相关问题