Java File class is Java’s representation of a file or directory pathname. Because file and directory names have different formats on different platforms, a simple string is not adequate to name them. Java File class contains several methods for working with the pathname, deleting and renaming files, creating new directories, listing the contents of a directory, and determining several common attributes of files and directories.
- It is an abstract representation of files and directory pathnames.
- A pathname, whether abstract or in string form can be either absolute or relative. The parent of an abstract pathname may be obtained by invoking the getParent() method of this class.
- First of all, we should create the File class object by passing the filename or directory name to it. A file system may implement restrictions to certain operations on the actual file-system object, such as reading, writing, and executing. These restrictions are collectively known as access permissions.
- Instances of the File class are immutable; that is, once created, the abstract pathname represented by a File object will never change.
How to Create a File Object?
A File object is created by passing in a string that represents the name of a file, a String, or another File object. For example,
File a = new File("/usr/local/bin/geeks");
This defines an abstract file name for the geeks file in the directory /usr/local/bin. This is an absolute abstract file name.
Fields in File Class in Java
Field
|
Type
|
Description
|
pathSeperator |
String |
the character or string used to separate individual paths in a list of file system paths. |
pathSeperatorChar |
Char |
the character used to separate individual paths in a list of file system paths. |
separator |
String |
default name separator character represented as a string. |
separatorChar |
Char |
default name separator character. |
Constructors of Java File Class
- File(File parent, String child): Creates a new File instance from a parent abstract pathname and a child pathname string.
- File(String pathname): Creates a new File instance by converting the given pathname string into an abstract pathname.
- File(String parent, String child): Creates a new File instance from a parent pathname string and a child pathname string.
- File(URI uri): Creates a new File instance by converting the given file: URI into an abstract pathname.
Methods of File Class in Java
S. No. |
Method |
Description |
Return Type |
1. |
canExecute() |
Tests whether the application can execute the file denoted by this abstract pathname. |
boolean |
2. |
canRead() |
Tests whether the application can read the file denoted by this abstract pathname. |
boolean |
3. |
canWrite() |
Tests whether the application can modify the file denoted by this abstract pathname. |
boolean |
4. |
compareTo(File pathname) |
Compares two abstract pathnames lexicographically. |
int |
5. |
createNewFile() |
Atomically creates a new, empty file named by this abstract pathname. |
boolean |
6. |
createTempFile(String prefix, String suffix) |
Creates an empty file in the default temporary-file directory. |
File |
7. |
delete() |
Deletes the file or directory denoted by this abstract pathname. |
boolean |
8. |
equals(Object obj) |
Tests this abstract pathname for equality with the given object. |
boolean |
9. |
exists() |
Tests whether the file or directory denoted by this abstract pathname exists. |
boolean |
10. |
getAbsolutePath() |
Returns the absolute pathname string of this abstract pathname. |
String |
11. |
list() |
Returns an array of strings naming the files and directories in the directory. |
String[] |
12. |
getFreeSpace() |
Returns the number of unallocated bytes in the partition. |
long |
13. |
getName() |
Returns the name of the file or directory denoted by this abstract pathname. |
String |
14. |
getParent() |
Returns the pathname string of this abstract pathname’s parent. |
String |
15. |
getParentFile() |
Returns the abstract pathname of this abstract pathname’s parent. |
File |
16. |
getPath() |
Converts this abstract pathname into a pathname string. |
String |
17. |
setReadOnly() |
Marks the file or directory named so that only read operations are allowed. |
boolean |
18. |
isDirectory() |
Tests whether the file denoted by this pathname is a directory. |
boolean |
19. |
isFile() |
Tests whether the file denoted by this abstract pathname is a normal file. |
boolean |
20. |
isHidden() |
Tests whether the file named by this abstract pathname is a hidden file. |
boolean |
21. |
length() |
Returns the length of the file denoted by this abstract pathname. |
long |
22. |
listFiles() |
Returns an array of abstract pathnames denoting the files in the directory. |
File[] |
23. |
mkdir() |
Creates the directory named by this abstract pathname. |
boolean |
24. |
renameTo(File dest) |
Renames the file denoted by this abstract pathname. |
boolean |
25. |
setExecutable(boolean executable) |
A convenience method to set the owner’s execute permission. |
boolean |
26. |
setReadable(boolean readable) |
A convenience method to set the owner’s read permission. |
boolean |
27. |
setReadable(boolean readable, boolean ownerOnly) |
Sets the owner’s or everybody’s read permission. |
boolean |
28. |
setWritable(boolean writable) |
A convenience method to set the owner’s write permission. |
boolean |
29. |
toString() |
Returns the pathname string of this abstract pathname. |
String |
30. |
toURI() |
Constructs a file URI that represents this abstract pathname. |
URI |
Java File Class Examples
Example 1: Program to check if a file or directory physically exists or not.
Java
import java.io.File;
class fileProperty {
public static void main(String[] args)
{
String fname = args[ 0 ];
File f = new File(fname);
System.out.println( "File name :" + f.getName());
System.out.println( "Path: " + f.getPath());
System.out.println( "Absolute path:"
+ f.getAbsolutePath());
System.out.println( "Parent:" + f.getParent());
System.out.println( "Exists :" + f.exists());
if (f.exists()) {
System.out.println( "Is writable:"
+ f.canWrite());
System.out.println( "Is readable" + f.canRead());
System.out.println( "Is a directory:"
+ f.isDirectory());
System.out.println( "File Size in bytes "
+ f.length());
}
}
}
|
Output
File name :file.txt
Path: file.txt
Absolute path:C:\Users\akki\IdeaProjects\codewriting\src\file.txt
Parent:null
Exists :true
Is writable:true
Is readabletrue
Is a directory:false
File Size in bytes 20
Example 2: Program to display all the contents of a directory
Here we will accept a directory name from the keyboard and then display all the contents of the directory. For this purpose, list() method can be used as:
String arr[]=f.list();
In the preceding statement, the list() method causes all the directory entries copied into the array arr[]. Then pass these array elements arr[i] to the File object and test them to know if they represent a file or directory.
Java
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
class Contents {
public static void main(String[] args)
throws IOException
{
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.out.println( "Enter dirpath:" );
String dirpath = br.readLine();
System.out.println( "Enter the dirname" );
String dname = br.readLine();
File f = new File(dirpath, dname);
if (f.exists()) {
String arr[] = f.list();
int n = arr.length;
for ( int i = 0 ; i < n; i++) {
System.out.println(arr[i]);
File f1 = new File(arr[i]);
if (f1.isFile())
System.out.println( ": is a file" );
if (f1.isDirectory())
System.out.println( ": is a directory" );
}
System.out.println(
"No of entries in this directory " + n);
}
else
System.out.println( "Directory not found" );
}
}
|
Output
Enter dirpath:
C:\Users\akki\IdeaProjects\
Enter the dirname
codewriting
.idea
: is a directory
an1.txt
: is a file
codewriting.iml
: is a file
file.txt
: is a file
out
: is a directory
src
: is a directory
text
: is a file
No of entries in this directory 7
Related Post: FileReader and FileWriter in Java
If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
20 May, 2023
Like Article
Save Article