java.io.File (родительский, дочерний) работает не так, как ожидалось

Я пытаюсь построить объект Java File на основе имени файла, предоставленного пользователем (может быть абсолютным или относительным) и базовой директории, зависящей от окружения. В java doc для java.io.File(File parent, String child) сказано следующее:

Если дочерняя строка пути является абсолютной, то она преобразуется в относительное имя пути в зависимости от системы.

Это заставило меня подумать, что если бы у меня был следующий код:

public class TestClass {
    public static void main(String[] args) throws IOException {
        File file = new File(new File("C:/Temp"),"C:/Temp/file.txt");
        System.out.println(file.getAbsolutePath());
    }
}

вывод был бы

C:\Temp\file.txt

и тогда я был бы в деле, потому что на самом деле уже не имело бы значения, если бы пользователь указал абсолютный или относительный путь. Но на самом деле выводится

C:\Temp\C:\Temp\file.txt

Что означает, что я должен вычислить точный относительный путь (или, по крайней мере, протестировать различные опции, чтобы посмотреть, существует ли файл). Неужели я неправильно понял JavaDoc?

11
задан Geert 1 September 2011 в 11:34
поделиться