Объяснение файловых конструкторов

Мне не удалось понять следующие конструкторы файлов.

    public File(String parent, String child) and 
    public File(File parent, String child)

Что означают параметры parent и child для файла? Когда я могу использовать их? Я сделал несколько программ, связанных с файлом, но я никогда не использовал их. Обычно я использую

    public File(String pathname)

Я прочитал java file docs, но я не мог понять, когда и как использовать эти конструкторы. Может кто-нибудь объяснить и привести примеры.

Ответ 1

Описание

Параметр parent является родительским каталогом имени файла child или относительного пути к файлу.

Где parent - это экземпляр файла, это файл каталога. Где parent - это строка, это просто этот каталог в терминах pathname.


Примеры

Рассмотрим следующую частичную файловую систему:

Documents
    Homework
    Classwork
    Tests

Вместо того, чтобы объявлять каждый новый файл с помощью "Documents\Subdir", вы можете объявить каталог Documents как файл и использовать его в качестве файла parent для других экземпляров файла, например:

File documents = new File("Documents");
File tests = new File("Documents/Tests"); // new File(String);

File homework = new File(documents, "Homework"); // new File(File, String)

File classwork = new File("Documents", "Classwork"); // new File(String, String)

Реальное приложение

По моему опыту, я использовал приложения, которые предоставляют API, содержащий метод, который возвращает файл каталога, в котором сторонним "плагинам" разрешено сохранять/читать файлы. Без конструктора File(File, String) мне нужно было бы преобразовать файл каталога в абсолютный путь и добавить к нему свой целевой файл.

В следующем примере Environment.getProgramDirectory() возвращает файл каталога, в котором разрешены разрешения.

File settingsFile = new File(Environment.getProgramDirectory(), "settings.txt");

Ответ 2

"Исходный абстрактный путь указывается для обозначения каталога, а дочерняя строка пути используется для обозначения каталога или файла." Как указано в API

Ответ 3

Объясним несколько примеров:

Предполагая, что у вас есть следующая структура:

/dir1
  dir11

Конструктор, который вы обычно используете new File("/dir1/dir11"), эквивалентен

new File("/dir1", "dir11") (конструктор, принимающий 2 String в качестве аргументов)

а также эквивалентно

new File(new File("/dir1"), "dir11") (конструктор с использованием File в качестве первого аргумента).

Ответ 4

Parent будет указывать на Directory

Child будет его Contents..