Какие методы класса File вы знаете?

Наиболее используемые методы класса File:

● boolean createNewFile(): делает попытку создать новый файл;

● boolean delete(): делает попытку удалить каталог или файл;

● boolean mkdir(): делает попытку создать новый каталог;

● boolean renameTo(File dest): делает попытку переименовать файл или каталог;

● boolean exists(): проверяет, существует ли файл или каталог;

● String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;

● String getName(): возвращает краткое имя файла или каталога;

● String getParent(): возвращает имя родительского каталога;

● boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;

● boolean isFile(): возвращает значение true, если по указанному пути находится файл;

● boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;

● long length(): возвращает размер файла в байтах;

● long lastModified(): возвращает время последнего изменения файла или каталога;

● String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;

● File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.

 

Что вы знаете об интерфейсе FileFilter?

Интерфейс FileFilter применяется для проверки, попадает ли объект File под некоторое условие. Этот интерфейс содержит единственный метод boolean accept(File pathName). Этот метод необходимо переопределить и реализовать. Например:

public boolean accept(final File file) {

return file.isExists() && file.isDirectory();

}

 

Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?

Метод File.listFiles() возвращает массив объектов File, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter. Это позволяет включить в список только те элементы, для которых метод accept возвращает true (критерием может быть длина имени файла или его расширение).

 

Что вы знаете о RandomAccessFile?

Класс java.io.RandomAccessFile обеспечивает чтение и запись данных в произвольном месте файла. Он не является частью иерархии InputStream или OutputStream. Это полностью отдельный класс, имеющий свои собственные (в большинстве своем native) методы. Объяснением этого может быть то, что RandomAccessFile имеет во многом отличающееся поведение по сравнению с остальными классами ввода/вывода так как позволяет, в пределах файла, перемещаться вперед и назад.

RandomAccessFile имеет такие специфические методы как:

● getFilePointer() для определения текущего местоположения в файле;

● seek() для перемещения на новую позицию в файле;

● length() для выяснения размера файла;

● setLength() для установки размера файла;

● skipBytes() для того, чтобы попытаться пропустить определенное число байт;

● getChannel() для работы с уникальным файловым каналом, ассоциированным с заданным файлом;

● методы для выполнения обычного и форматированного вывода из файла (read(), readInt(), readLine(), readUTF() и т.п.);

● методы для обычной или форматированной записи в файл с прямым доступом (write(), writeBoolean(), writeByte() и т.п.).

Так же следует отметить, что конструкторы RandomAccessFile требуют второй аргумент, указывающий необходимый режим доступа к файлу - только чтение ("r"), чтение и запись ("rw") или иную их разновидность.

 

Какие режимы доступа к файлу есть у RandomAccessFile?

"r" открывает файл только для чтения. Запуск любых методов записи данных приведет к выбросу исключения IOException.

"rw" открывает файл для чтения и записи. Если файл еще не создан, то осуществляется попытка создать его.

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

"rwd" открывает файл для чтения и записи подобно "rws", но требует от системы синхронно записывать изменения на физический носитель только при каждом изменении содержимого файла. Если изменяются метаданные, синхронная запись не требуется.

 

35. Абсолютный и относительный путь.

Какой символ является разделителем при указании пути в файловой системе?

Для различных операционных систем символ разделителя различается. Для Windows это \, для Linux - /.

В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю File.separator.

 

Что такое «абсолютный путь» и «относительный путь»?

Абсолютный (полный) путь — это путь, который указывает на одно и то же место в файловой системе, вне зависимости от текущей рабочей директории или других обстоятельств. Полный путь всегда начинается с корневого каталога.

Относительный путь представляет собой путь по отношению к текущему рабочему каталогу пользователя или активного приложения.

 

36. Символьная ссылка.

Что такое «символьная ссылка»?

Символьная (символическая) ссылка (также «симлинк», Symbolic link) — специальный файл в файловой системе, в котором, вместо пользовательских данных, содержится путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Целью ссылки может быть любой объект: например, другая ссылка, файл, каталог или даже несуществующий файл (в последнем случае, при попытке открыть его, должно выдаваться сообщение об отсутствии файла).

Символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как:

позволяют для одного файла или каталога иметь несколько имён и различных атрибутов;

свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одной файловой системы (одного раздела) и не могут ссылаться на каталоги).

 

Java 8

37. Методы интерфейсов по умолчанию.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: