Working with the File System in Java: A Complete Guide

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Working with the File System in Java: From File to NIO



Working with the file system is one of the fundamental tasks in Java development. Whether it's reading configurations, writing logs, or processing user data, the ability to correctly interact with files and directories is necessary for every Java developer. In this article, we will thoroughly examine the main classes and approaches for working with the file system, starting with the classic java.io.File and ending with the modern java.nio.file.



The File Class: Basics of Working with Files and Folders



The java.io.File class has existed in Java since the very first version and provides basic capabilities for working with paths, files, and directories. It does not read or write data directly, but allows you to perform file system management operations.



Creating a File object and checking existence:

import java.io.File;

public class FileExample { public static void main(String[] args) { File file = new File("example.txt"); File dir = new File("myFolder");

System.out.println("File exists: " + file.exists()); System.out.println("Is a directory: " + dir.isDirectory()); }}


Creating files and directories:

File newFile = new File("newFile.txt");if (newFile.createNewFile()) {    System.out.println("File created: " + newFile.getName());} else {    System.out.println("File already exists");}

File newDir = new File("newDirectory");if (newDir.mkdir()) { System.out.println("Folder created");}

// Create nested directoriesFile nestedDir = new File("parent/child/grandchild");if (nestedDir.mkdirs()) { System.out.println("Nested folders created");}


Getting file information:

File infoFile = new File("example.txt");System.out.println("Absolute path: " + infoFile.getAbsolutePath());System.out.println("Size: " + infoFile.length() + " bytes");System.out.println("Last modified: " + infoFile.lastModified());System.out.println("Parent folder: " + infoFile.getParent());


Deleting and renaming:

File fileToDelete = new File("temp.txt");if (fileToDelete.delete()) {    System.out.println("File deleted");}

File oldFile = new File("old.txt");File newFile = new File("new.txt");if (oldFile.renameTo(newFile)) { System.out.println("File renamed");}


Reading and Writing Files: Classic I/O Streams



For direct reading and writing of data, I/O streams are used. The main classes are: FileInputStream, FileOutputStream for byte data and FileReader, FileWriter for text data.



Writing text to a file using FileWriter:

import java.io.FileWriter;import java.io.IOException;

public class WriteExample { public static void main(String[] args) { try (FileWriter writer = new FileWriter("output.txt")) { writer.write("Hello, world!"); writer.write("This is the second line."); System.out.println("Write completed successfully"); } catch (IOException e) { System.err.println("Write error: " + e.getMessage()); } }}


Reading text from a file using FileReader and BufferedReader:

import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;

public class ReadExample { public static void main(String[] args) { try (BufferedReader reader = new BufferedReader(new FileReader("output.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line);

Blogs

Book Recommendations