Работа с элементами файловой системы в Java. Класс File

Fileкласс для работы с элементами файловой системы. С помощью различных методов этого класса можно получить информацию о переданном в конструктор объекта этого класса элементе файловой системы.

Например:

  • getPath()вернуть путь переданного элемента,  
  • getName()вернуть имя переданного элемента,
  • isDirectory()является ли директорией.

Пример программы:

import java.io.*; import java.util.*; class FileExample { public static void main(String[] args) { // Для примера выведем полный путь к файлу person.txt // в текущей директории с помощью метода getAbsolutePath. File file = new File(“person.txt”); System.out.println(file.getAbsolutePath()); // или например проверим является ли переданное // в конструктор директорией с помощью метода isDirectory. // Вернет true, так как InputOutputStreams // является директорией. File directory = new File( “C:/Users/User/Desktop/Java/JavaExamples/InputOutputStreams” ); System.out.println(directory.isDirectory()); } }

Вывод:

Как видим, вернулся абсолютный путь файла person.txt и то, что InputOutputStreams является директорией.

Также есть много других полезных методов для создания, удаления или переименования файла или директории, проверки готов ли файл для записи, получить размер файла.

Все эти методы, конечно, приводить не будем, так как они очень простые.

Далее разберем некоторые чуть более сложные и полезные.


Метод listFiles.

С помощью метода listFiles можем получить все файлы в директории и поместить их в массив File[]. Благодаря чему можем пройтись по всем файлам с помощью цикла и выполнить какие-то действия с каждым из них.

Пример программы:

import java.io.*; import java.util.*; class FileExample { public static void main(String[] args) { File directory = new File( “C:/Users/User/Desktop/Java/JavaExamples/InputOutputStreams”); System.out.println(directory.isDirectory()); // Получим все файлы в директории InputOutputStreams File[] files = directory.listFiles(); // Каждый элемент массива files — это один файл из InputOutputStreams. for (File f : files) { // Выведем имена каждого файла в директории InputOutputStreams System.out.println(f.getName()); } } }

Вывод:

В консоль вывелись имена всех файлов в папке InputOutputStreams.


Класс FileFilter.

FileFilter предназначен для проверки попадает ли объект File под некоторое условие.

Созданный объект FileFileter обычно передается в метод listFiles для фильтрации файлов в деректории.

Пример программы:

import java.io.*; import java.util.*; class FileExample{ public static void main(String[] args) { File directory = new File(“C:/Users/User/Desktop/Java/JavaExamples/InputOutputStreams”); // Нужно переопределить файл accept, который // будет применяться к каждому файлу, который будет // выбираться из директории с помощью listFiles FileFilter ff = new FileFilter() { // Анонимным классом переопределяем accept public boolean accept(File file) { // Если файл в директории заканчивается на .txt if (file.getName().endsWith(“.txt”)) { // Возвращаем true return true; } // Иначе false return false; } }; // Метод listFiles(FileFilter filter) отбирает не все // файлы данного каталога, а только те, которые // удовлетворяют определенному условию. // Параметр filter предназначен для // задания этого условия. // Добавляет в массив файлов только те, accept // которых вернул true File[] files = directory.listFiles(ff); for (File f: files) { System.out.println(f.getName()); } } }

Вывод:

Как видим, вывелись на консоль только имена файлов с форматом .txt.

Object. Метод toString и его переопределение

Поймите важность метода toString в Java и научитесь его правильно переопределять для вывода полезной информации об объекте. Примеры реализации.
Time to read: 15

Метод Clone и его переопределение

Разберитесь с методом clone в Java: как клонировать объекты, включая ссылочные поля. Практические примеры переопределения clone для глубокого копирования.
Time to read: 14

Метод hashCode и его переопределение

Поймите важность метода hashCode в Java: как правильно переопределять его для работы с HashSet и HashMap, чтобы избежать дублирования элементов.
Time to read: 16