Бесплатный курс по Java: от основ до продвинутого уровня
Работа с элементами файловой системы в 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.
Поймите важность метода toString в Java и научитесь его правильно переопределять для вывода полезной информации об объекте. Примеры реализации.
Time to read: 15
Метод Clone и его переопределение
Разберитесь с методом clone в Java: как клонировать объекты, включая ссылочные поля. Практические примеры переопределения clone для глубокого копирования.
Time to read: 14
Метод hashCode и его переопределение
Поймите важность метода hashCode в Java: как правильно переопределять его для работы с HashSet и HashMap, чтобы избежать дублирования элементов.