我可以在不需要其toString()方法的情况下编写两个文件路径吗?

xto*_*ofl 3 java directory file path

想象一下,我有一个"基础"路径对象,表示一个目录,一个"相对"路径对象表示基础内的某个文件.

我希望代码看起来有点像

AbsolutePath base = new AbsolutePath("/tmp/adirectory");
RelativePath relativeFilePath = new RelativePath("filex.txt");
AbsolutePath absoluteFile = base.append( relativeFilePath );
Run Code Online (Sandbox Code Playgroud)

但是在Java API(我还不太清楚)中,我发现只有File,我才能做到最好

File base = new File("/tmp/adirectory");
File relativeFilePath = new File("filex.txt");
File absoluteFile = base.toString() 
                  + File.separator 
                  + relativeFilePath.toString();
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Joa*_*uer 8

你可以得到最接近的java.io.FileFile(File, String)构造函数:

File base = ...;
File relative = ...;
File combined = new File(base, relative.toString());
Run Code Online (Sandbox Code Playgroud)

如果您可以使用PathJava 7中引入的类,那么您可以使用resolve()方法,它完全符合您的要求:

Path base = ...;
Path relative = ...;
Path combined = base.resolve(relative);
Run Code Online (Sandbox Code Playgroud)

请注意,如果base不是绝对路径,那么combined也不是绝对的!如果你需要一个绝对路径,那么File你可以使用getAbsoluteFile()Path使用toAbsoutePath().