File Constructors Explanation
Explanation
The parent
parameter is the parent directory of the child
file name or relative file path.
Where parent
is a File instance, it is a directory file. Where parent
is a String, it's simply that directory in pathname
terms.
Examples
Consider the following partial file system:
Documents
Homework
Classwork
Tests
Rather than declaring each new file with "Documents\Subdir", you can declare the Documents directory as a file, and use it as the parent
File of the other File instances, like so:
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)
Real-world application
In my experience, I've used applications that provide an API containing a method that returns the directory file in which third-party "plugins" are allowed to save/read files. Without the File(File, String)
constructor, I would need to convert the directory file into an absolute path and append my target file to it.
In the following example, Environment.getProgramDirectory()
returns the directory file in which permissions are granted.
File settingsFile = new File(Environment.getProgramDirectory(), "settings.txt");
"The parent abstract pathname is taken to denote a directory, and the child pathname string is taken to denote either a directory or a file. " As specified on the API
Let's explain with some examples:
Assuming that you have the following structure:
/dir1
dir11
The constructor that you usually use new File("/dir1/dir11")
is equivalent to
new File("/dir1", "dir11")
(constructor taking 2 String
as arguments)
and also equivalent to
new File(new File("/dir1"), "dir11")
(constructor using a File
as first argument).