File Constructors Explanation

I was unable to understand the following file constructors.

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

What do the parameters parent and child mean for the file? When can I use these? I have done few programs related to file but I have never used these. I usually use

public File(String pathname) 

I have read Javadoc but I could not figure out when and how to use these constructors. Could someone please explain and give examples.

2

4 Answers

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"); 
4

"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

Parent will point to the Directory

Child will be its Contents..

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).

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like