File Class
The File class in Java (from the java.io package) represents a file or directory path in the file system. It is used to create, delete, inspect, and manage files/directories, but does not read or write file content. This is a high-frequency interview topic, often confused with file I/O streams.
What Is the File Class?
- Represents file or directory metadata
- Works with paths, not content
- Platform-independent (uses OS-specific separators internally)
- Part of java.io package
File file = new File("data.txt");
What File Can and Cannot Do
✔ Can Do
- Check existence
- Create/delete files & directories
- Get file properties (name, size, path, permissions)
- List directory contents
❌ Cannot Do
- Read file data
- Write file data
(Use streams/readers/writers for content I/O)
Creating a File Object
1️⃣ Using Relative Path
File f = new File("data.txt");
✔ Path relative to current working directory
2️⃣ Using Absolute Path
File f = new File("C:\\files\\data.txt");
3️⃣ Using Parent + Child
File f = new File("C:\\files", "data.txt");
✔ Cleaner and safer path handling
Commonly Used Methods (Must-Know)
Existence & Type Checks
f.exists(); // true/false
f.isFile(); // file?
f.isDirectory(); // directory?
File Information
f.getName();
f.getPath();
f.getAbsolutePath();
f.length(); // size in bytes
f.lastModified();
Permissions
f.canRead();
f.canWrite();
f.canExecute();
Creating Files and Directories
Create a File
File f = new File("test.txt");
f.createNewFile(); // throws IOException
✔ Creates empty file if not exists
❌ Returns false if already exists
Create Directory
File dir = new File("logs");
dir.mkdir(); // single directory
Create Directory Tree
File dir = new File("a/b/c");
dir.mkdirs(); // creates parent directories too
Deleting Files and Directories
f.delete();
⚠ Directory must be empty to delete successfully
Listing Directory Contents
List Names
File dir = new File("C:\\files");
String[] names = dir.list();
List Files as File Objects (Preferred)
File[] files = dir.listFiles();
✔ Allows further inspection
Renaming / Moving Files
File oldFile = new File("old.txt");
File newFile = new File("new.txt");
oldFile.renameTo(newFile);
✔ Also works as move if paths differ
⚠ Behavior may vary across OS
File Separator (Platform-Independent)
File.separator
✔ Avoid hardcoding / or \\
File vs Streams (Interview Trap)
| Aspect | File | Streams / Readers |
|---|---|---|
| Purpose | Metadata & path | Read/write content |
| Package | java.io | java.io, java.nio |
| Reads data | ❌ No | ✔ Yes |
| Writes data | ❌ No | ✔ Yes |
File vs Path (Modern Java)
| Aspect | File | Path (java.nio.file) |
|---|---|---|
| Introduced | Java 1.0 | Java 7 |
| API | Limited | Rich & modern |
| Exception handling | Weak | Strong |
| Recommendation | Legacy | Preferred |
✔ Use Path + Files for new code
✔ Still must know File for interviews
Common Beginner Mistakes
- Assuming File reads/writes content
- Forgetting createNewFile() throws exception
- Deleting non-empty directories
- Hardcoding path separators
- Ignoring return values of mkdir() / delete()
Interview-Ready Answers
Short Answer
The File class represents a file or directory path in Java.
Detailed Answer
In Java, the File class from the java.io package is used to represent file and directory paths. It provides methods to create, delete, and inspect files and directories, but it does not perform actual file reading or writing. For content I/O, streams or NIO APIs are used.
Key Takeaway
File is about paths and metadata, not data.
Use it to manage files and directories, and combine it with streams or NIO for actual I/O operations.
Hands-On File Class Examples (Quick Reference)
1. Creating a File Object (No File Created Yet)
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File("test.txt");
System.out.println(f.exists());
}
}
Key Point
File object ≠ actual file
2. Creating a New File Using createNewFile()
import java.io.*;
class Demo {
public static void main(String[] args) throws Exception {
File f = new File("sample.txt");
System.out.println(f.createNewFile());
}
}
Output
true // if file did not exist
3. Creating a Directory Using mkdir()
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File("logs");
System.out.println(dir.mkdir());
}
}
4. Creating Nested Directories Using mkdirs()
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File("data/2026/jan");
System.out.println(dir.mkdirs());
}
}
5. Checking File Properties
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File("test.txt");
System.out.println(f.exists());
System.out.println(f.isFile());
System.out.println(f.isDirectory());
}
}
6. Reading File Metadata
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File("test.txt");
System.out.println("Name: " + f.getName());
System.out.println("Path: " + f.getAbsolutePath());
System.out.println("Size: " + f.length());
}
}
7. Listing Files in a Directory
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File(".");
String[] files = dir.list();
for (String name : files) {
System.out.println(name);
}
}
}
8. Listing Files with File[]
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File(".");
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getName());
}
}
}
9. Filtering Files (Only .txt Files)
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File(".");
File[] files = dir.listFiles(
f -> f.getName().endsWith(".txt")
);
for (File f : files) {
System.out.println(f.getName());
}
}
}
10. Checking Read / Write / Execute Permissions
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File("test.txt");
System.out.println(f.canRead());
System.out.println(f.canWrite());
System.out.println(f.canExecute());
}
}
11. Renaming a File
import java.io.File;
class Demo {
public static void main(String[] args) {
File oldFile = new File("old.txt");
File newFile = new File("new.txt");
System.out.println(oldFile.renameTo(newFile));
}
}
12. Deleting a File
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File("temp.txt");
System.out.println(f.delete());
}
}
13. Deleting Empty Directory
import java.io.File;
class Demo {
public static void main(String[] args) {
File dir = new File("logs");
System.out.println(dir.delete());
}
}
Note
Directory must be empty
14. File Path Variations
File f1 = new File("test.txt"); // relative
File f2 = new File("C:/data/test.txt"); // absolute
File f3 = new File("C:/data", "test.txt"); // parent + child
15. Checking Hidden Files
import java.io.File;
class Demo {
public static void main(String[] args) {
File f = new File(".gitignore");
System.out.println(f.isHidden());
}
}
16. Last Modified Time
import java.io.File;
import java.util.Date;
class Demo {
public static void main(String[] args) {
File f = new File("test.txt");
System.out.println(new Date(f.lastModified()));
}
}
17. File Separator (Cross-Platform)
class Demo {
public static void main(String[] args) {
System.out.println(File.separator);
}
}
18. Common Interview Trap – File Does Not Exist
File f = new File("abc.txt");
f.delete(); // returns false if file doesn't exist
19. File vs Directory Check Before Operation
if (f.exists() && f.isFile()) {
System.out.println("Valid file");
}
20. Interview Summary – File Class
java.io.File
Key Points
- Represents file or directory path
- Does not read/write content
- Supports metadata & structure operations
- Platform-independent paths
- For content → use Streams / NIO