从几个文件对象创建路径或只创建一个

时间:2010-09-20 07:34:24

标签: java

我在不同的平台上工作(Solaris / Windows)。我需要创建一个包含多个路径元素的文件对象。问题是:最好是“一步一步”或在一次调用中创建最终的File对象。后者假设Java在不同平台上进行正确的路径映射。由于文件分隔符不同,它是否总是进行正确的映射?

File parent = // some directory;

// Use several file objects...
File myFile1 = new File(new File(new File(parent, "part1"), "part2"), "myfile");

// .. or use just on (on all platforms!)?
File myFile2 = new File(parent, "part1/part2/myfile");

第一种解决方案可能(a)较慢且(b)可读性较差......

3 个答案:

答案 0 :(得分:2)

我认为解决方案(1)没有任何优势。两者都将创建一个有效的File对象,当然,第二个解决方案更容易理解,因为它清楚地表明,您有一个相对于某个父文件夹的路径。

答案 1 :(得分:1)

使用第二个,而不是对正斜杠进行硬编码,请使用File.separatorChar / File.separator

  

系统相关的默认名称分隔符。此字段初始化为包含系统属性file.separator的值的第一个字符。在UNIX系统上,该字段的值为“/”;在Microsoft Windows系统上它是'\'。

请注意,您不需要使用Sun的JVM执行此操作 - Win32FileSystem类会转换为反斜杠 - 如果您查看其代码,则它具有slashaltSlash ,如果遇到altSlash/),该类会规范化路径

但是,正如评论中所指出的,为了保证您的代码可以移植,请使用File.separator

答案 2 :(得分:0)

除非您想对父文件对象执行某些操作(例如,如果目录存在)或重用多个文件的父文件对象,否则第一个解决方案没有任何优势。如果您只为一个文件创建File对象,请使用秒。这不那么冗长。