Управление потоками
Что вы знаете об интерфейсе FileFilter?
Интерфейс FileFilter в Java представляет собой функциональный интерфейс, который используется для фильтрации файлов в директории на основе определенных критериев. Он содержит единственный абстрактный метод:
public interface FileFilter {
boolean accept(File pathname);
}
Метод accept(File pathname) принимает объект File, представляющий файл или директорию, и возвращает true, если файл удовлетворяет критериям фильтрации, или false в противном случае.
import java.io.File;
import java.io.FileFilter;
public class ExampleFileFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
// Фильтр для файлов только с расширением .txt
if (pathname.isFile() && pathname.getName().endsWith(".txt")) {
return true;
}
return false;
}
public static void main(String[] args) {
File directory = new File("/path/to/directory");
// Получаем список файлов, отфильтрованных по критериям FileFilter
File[] txtFiles = directory.listFiles(new ExampleFileFilter());
// Выводим список отфильтрованных файлов
for (File file : txtFiles) {
System.out.println(file.getName());
}
}
}
Что вы знаете о RandomAccessFile?
RandomAccessFile в Java представляет собой класс, который позволяет
читать и записывать данные в файле в произвольных местах, то есть осуществлять
произвольный доступ к данным. Основные особенности и возможности
RandomAccessFile:
-
Произвольный доступ:
RandomAccessFileпозволяет перемещаться по файлу и читать/писать данные с любой позиции в файле. -
Чтение и запись: поддерживает как чтение данных из файла, так и запись данных в файл.
-
Режимы доступа:
-
r: только для чтения. -
rw: чтение и запись.
-
-
Методы:
-
read(),readFully(): для чтения данных из файла. -
write(),writeBytes(),writeUTF(): для записи данных в файл. -
seek(long pos): перемещение указателя на указанную позицию в файле. -
length(): возвращает текущую длину файла в байтах. -
close(): закрывает файл и освобождает связанные ресурсы.
-
-
Не является членом иерархии потоков:
RandomAccessFileне является наследникомInputStreamилиOutputStream, а предоставляет собственные методы для работы с файлом.
Пример использования RandomAccessFile для чтения и записи данных:
import java.io.RandomAccessFile;
public class ExampleRandomAccessFile {
public static void main(String[] args) {
try {
// Создаем RandomAccessFile для чтения и записи в файл "data.txt"
RandomAccessFile file = new RandomAccessFile("data.txt", "rw");
// Записываем данные в файл
file.writeUTF("Hello, World!");
// Перемещаем указатель в начало файла
file.seek(0);
// Читаем данные из файла
String message = file.readUTF();
System.out.println("Message from file: " + message);
// Закрываем файл
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Этот пример демонстрирует создание RandomAccessFile, запись строки в файл, чтение этой строки и закрытие файла после операций. RandomAccessFile полезен в случаях, когда требуется эффективно читать и записывать данные в различные места файла без необходимости последовательного доступа.
Что такое «абсолютный путь» и «относительный путь»?
Абсолютный путь и относительный путь - это понятия, используемые для определения местоположения файла или директории в файловой системе:
-
Абсолютный путь:
-
Это полный путь к файлу или директории, начиная от корневого каталога файловой системы.
-
В Windows может начинаться с диска (например,
C:\\folder\\file.txt). -
В Unix-подобных системах начинается с корневого каталога (
/home/user/folder/file.txt).
-
-
Относительный путь:
-
Это путь к файлу или директории относительно текущего рабочего каталога или другой относительной точки отсчета.
-
Не начинается с корневого каталога, а использует текущее местоположение в файловой системе.
-
Примеры:
-
folder/file.txt(относительно текущего каталога) -
../parent_folder/file.txt(относительно родительского каталога)
-
-
Что такое «символьная ссылка»?
Символьная ссылка (symbolic link), также известная как символическая ссылка или симлинк, это специальный тип файла в файловых системах, который работает как указатель на другой файл или директорию.
-
Указатель на другой объект: символьная ссылка содержит путь к целевому файлу или директории.
-
Независимость от расположения: целевой объект может быть расположен как на том же диске, так и на другом, что делает символьные ссылки более гибкими по сравнению с жесткими ссылками.
-
Символьная ссылка сама по себе является файлом: символьная ссылка имеет свои собственные метаданные (размер, права доступа и т.д.).
-
Слабая связь: если целевой файл или директория удалены или перемещены, символьная ссылка остается, но становится битой (broken link).
Примеры использования символьных ссылок:
-
Создание сокращенных или удобных путей к часто используемым директориям.
-
Работа с различными версиями приложений или библиотек, где символьные ссылки указывают на актуальные версии.
-
Создание ссылок на файлы, находящиеся в разных местах файловой системы для удобства работы с ними.