Java как управлять атрибутами файла

Обновлено: 07.07.2024

За основу данной статьи была взята информация из 9-ой главы книги «Oracle Certified Professional Java SE 7 Programmers Exams 1Z0-804 and 1Z0-805». Она была немного изменена (кое-где обрезана, а кое-где дополнена с помощью Google и Википедии). Здесь показаны далеко не все возможности NIO — для более подробной информации следует обратиться к официальной документации. Приятного прочтения.

Немного терминологии

Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API) — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах.

I/O (input/output, Ввод-вывод ) — взаимодействие между обработчиком информации и её поставщиком и/или получателем. Ввод — сигнал или данные, полученные обработчиком, а вывод — сигнал или данные, посланные им (или из него).

NIO ( /*в контексте Java*/ Non-blocking I/O, New I/O) — коллекция прикладных программных интерфейсов для языка Java, предназначенных для реализации высокопроизводительных операций ввода-вывода. Также встречается аббревиатура NIO.2 – она относится к нововведениям относительно этого направления в Java 7.

Символьная ссылка (Symbolic link, симлинк) — специальный файл в файловой системе, содержащий только текстовую строку с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данному файлу.

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

Относительный путь — это путь по отношению к текущему рабочему каталогу.

Немного истории

Изначально Java предоставляла класс File (в пакете java.io) для доступа к файловым системам. Этот класс представляет файл/каталог в файловой системе и позволяет выполнять такие операции, как проверка на существование файла/каталога, получении свойств, и удаление файла/каталога. Тем не менее, первый вариант API не был достаточен для удовлетворения потребностей разработчиков. Ощущалась явная необходимость доработки I/O API.

Краткий список недостатков первой I/O API:

  • Классу File не хватало функциональности. Например не было метода copy для копирования файла/каталога.
  • В классе File определено много методов, которые возвращают Boolean-значение. В случае ошибки, возвращалось false, а не бросалось исключение, что затрудняло обнаружение и исправление ошибок.
  • Класс File не предоставляет хорошей обработки символьных ссылок.
  • Класс File обрабатывает файлы/каталоги неэффективно (проблемы с масштабированием);
  • Класс File предоставляет доступ к ограниченному набору атрибутов файлов, который зачастую недостаточен.

Для преодоления этих проблем, в Java 4 введен NIO (New IO). Ключевые особенности NIO:

В Java 7 был введён пакет java.nio.file для лучшей поддержки и обработки символьных ссылок, полного доступа к атрибутам и работы с файловой системой через интерфейсы или классы, такие как Path, Paths, and Files.

Использование интерфейса Path

Java 7 представляет новую абстракцию для пути, а именно интерфейс Path. Он используется в новых функциях и API, по всему NIO.2. Объект пути содержит имена каталогов и файлов, которые составляют полный путь до файла/каталога, представленного объектом Path; Path содержит методы для извлечения элементов пути, манипуляций с ними и их добавления.

Ниже приведён пример кода, для выполнения на Unux-системе, но пользователи Windows могут раскомментировать одну строку и закомментировать другую, для выполнения примера на своих машиах (см. комментарии в коде). Существование соответствующих файлов и катологов (test и testfile.txt) в файловой системе не обязательно. В этом примере создаётся объект Path и извлекается основная информация, связанная с ним:

Вывод получается такой:

  • Сначала создаётся объект класса Path, с использованием метода get () класса. Данный метод принимает строку, содержащую путь.
  • Обратите внимание на использование управляющего символа '\' в Paths.get("D:\\test\\testfile.txt") для Windows-систем. Без него '\t' будет интерпретироваться как символ табуляции, что приведёт к java.nio.file.InvalidPathException при запуске программы, т.к. символы табуляции не могут содержаться в путях. (На мой взгляд пути Linux-систем более удобны для программистов, т.к. используют символ слэша, не требующий экранирования.)
  • Затем происходит извлечение имени файла с использованием метода getFilename() объекта Path
  • Далле используется метод getRoot() для получения корневого элемента объекта Path и метод getParent() для получения родительской директории целевого файла.
  • В конце данного примера происходит обход елементов пути с помощью цикла foreach. Как альтернативу можно использовать обычный цикл и методы getNameCount() (для получения числа элементов в пути) и getName(index) (для получения элемента по индексу).

Перейдём к другому примеру который включает получение абсолютного пути от относительного пути и нормализацию пути:

  • Метод toUri() возвращает URI (путь который может быть открыт из браузера).
  • Метод toAbsolutePath() возвращает абсолютный путь от данного относительного пути. В случае, если был введён абсолютный путь, метод вернёт его же.
  • Метод normalize() выполняет нормализацию пути, другими словами удаляет ненужные символы (такие как “ . ” и “ .. ”) из объекта Path.
  • Метод toRealPath () возвращает абсолютный путь от полученного пути (как toAbsolutePath ()) и нормализует его (как normalize()). Кроме того, если все параметры выбраны правильно, то он может даже работать с символьными ссылками. Однако, для этого метода необходимо, чтобы конечный файл/каталог существовал в файловой системе (это не является обязательным условием для других методов Path).

Пример вывода при выполнении данного кода (файл Test не должен существовать в файловой системе для аналогичного вывода):

(Пользователи Windows-систем получат sun.nio.fs.WindowsException.translateToIOException вместо sun.nio.fs.UnixException.translateToIOException и т. д. и т.п.)

Пример вывода при выполнении данного кода (файл Test должен существовать в файловой системе для аналогичного вывода):

Интерфейс Path содержит два метода для сравнения объектов Path: equals() and compareTo(). Метод equals() сравнивает пути и возвращает Boolean. Метод compareTo() сравнивает пути посимвольно и возвращает: 0, если пути равны; отрицательное целое значение, если путь в объекте вызывающем метод лексикографически меньше пути в объекте, переданном в качестве параметра; положительное целое значение в противоположном случае.

Последний System.out.println является подсказкой — он выводит путь, который должен быть передан в path2 для аналогичного вывода. Вывод должен получится такой:

Использование класса Files

Рассмотрим класс Files (введён в Java 7, находится в пакете java.nio.file), который можно использовать для выполнения различных операций с файлами и каталогами. Files является служебным классом, это означает, что это final-класс с private-конструктором и содержит только статические методы. В этом классе находится множество методов для выполнения различных действий. Рассмотрим некоторые из них.

Выше был показан пример кода, в котором выяснялось, указывают ли два пути на один файл. Сущесвует способ проверить это с помощью метода isSameFile () из класса Files:

Т.к. тут сравниваются файлы, а не пути, то существование соответствующего файла обязательно (см. подсказку для пути в предыдущем примере) иначе будет получена ошибка java.nio.file.NoSuchFileException.

В случае, если файл по указанному адресу существует, получим такой вывод:

Можно определить, имеем мы дело с файлом или директорией (папкой) с помощью метода isDirectory() класса Files и проверить их существование с помощью метода exists():

Вывод должен получится примерно такой (выбирайте пути в соответствии с вашей ОС и расположением файлов):

Интересный вывод можно получить, если написать Path path = Paths.get("/"); для Unix-систем или Path path = Paths.get("С:\\"); для Windows-систем, т.е. если передать в качестве параметра имя корневого котолога:

Для корневого каталога path.getFileName() возвращает null.

Класс Files содержит методы isReadable(), isWriteable() и isExecutable() для проверки возможности чтения, записи и выполнения файлов:

Метод getAttribute() позволяет получить свойства (атрибуты) файла. Метод принимает переменное число параметров: первый — объект Path; второй — имя атрибута; далее от нуля до нескольких значений LinkOption (это enum):

Коппирование файлов

Теперь рассмотрим коппирование файла/диретории. Для этого используем метод Files.copy(). Сигнатура данного метода:

Path copy(Path source, Path target, CopyOption. . . options)

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

После первого запуска всё должно отработать корректно для корректных путей. Но если данный код без изменений скомпилировать и выполнить повторно, то будет получено исключение java.nio.file.FileAlreadyExistsException. Оно связано с тем, что целевой файл уже существует. Для избежания таких проблем можно указать, чтобы в случае его существования он перезаписывался. Для этого надо немного изменить одну строку кода:

Перемещение файла

Метод для перемещения файла очень похож на метод для копирования:

Path move(Path source, Path target, CopyOption. . . options)

Значения передаваемых параметров совпадают по смыслу. Пример кода отличается от предыдущего минимально:

Если при копировании директории содержащиеся в ней файлы и директории не копировались, то при её перемещении, в случае отсутствия ошибок, перемещается и всё содержимое.

Удаление файла

Посмотрим на пример кода:

Несколько моментов, которые необходимо помнить относительно метода Files.delete():

  • В случае удаления каталога, необходимо, чтобы он был пустым, иначе будет получено исключение (java.nio.file.DirectoryNotEmptyException)
  • Если передать в данный метод символьную ссылку, то будет удалена ссылка, а не целевой файл.
  • Для данного метода необходимо, чтобы файл существовал, иначе будет получено исключение (java.nio.file.NoSuchFileException) . Если необходимо игнорировать данные случаи, то лучше подойдёт метод deleteIfExists(), который удаляет файл в случае его существования и не бросает подобное исключение при его отсутствии.

Обход дерева файлов

При работе с файловой системой может возникнуть необходимость обхода дерева файлов, например при поиске файла или копировании каталога со всем его содержимым. Класс Files содержит два метода, позволяющих обходить дерево файлов. Их сигнатуры приведены ниже:

Оба метода принимают путь, с которого начнётся обход дерева и экземпляр типа FileVisitor, который будет определять поведение при обходе дерева. Второй метод имеет два дополнительных параметра: Set, содержащий опции обхода, и максимальную глубину. Максимальная глубина определяет, насколько уровней каталогов будет происходить обход. Если в её качестве указать 0, то будет рассматриваться только указанный файл, а если указать MAX_VALUE, то будут пройдены все подкаталоги.

FileVisitor — это интерфейс, содержащий следующие методы:

  • FileVisitResult preVisitDirectory(T dir, BasicFileAttributesattrs) — выполняется перед достуом к элементам каталога.
  • FileVisitResult visitFile(T file, BasicFileAttributes attrs) — выполняется при доступе к файлу.
  • FileVisitResult postVisitDirectory(T dir, IOException exc) — выполняется, когда все элементы директории пройдены .
  • FileVisitResult visitFileFailed(T file, IOException exc) — выполняется, если к файлу нет доступа.

Вам необходимо реализовать интерфейс FileVisitor, чтобы передать соответствующий объект в метод walkFileTree(). Но если необходимости реализовывать все четыре метода этого интерфейса нет, то можно просто расширить реализацию класса SimpleFileVisitor, переопределив лишь необходимые методы.

При выполнении данного кода будут выведены все вложенные каталоги и файлы по указанному пути. Вот что следует понять:

  • Объявляется класс MyFileVisitor, унаследованный от SimpleFileVisitor, в котором переопределены два метода: visitFile() (для вывода имени файла) и preVisitDirectory() (для вывода имени директории).
  • Вызывается walkFileTree() в который передаётся объект MyFileVisitor.
  • Метод walkFileTree() начинает выполнение с переданного в него каталога. При этом вызывается метод visitFile() при каждом проходе файла, preVisitDirectory() — перед просмотром элементов директории, postVisitDirectory() — после просмотра элементов директории, visitFileFailed() — в случае отсутствия доступа к файлу/дириктории.
  • Из этих четырёх методов были переопределены только два для вывода имён каталогов и файлов.
  • Можно контролировать поток обхода с помощью возвращаемых этими методами значений (enum FileVisitResult). Их четыре:
    1. CONTINUE: указывает на то, что обход дерева следует продолжить.
    2. TERMINATE: указывает, что обход нужно немедленно прекратить.
    3. SKIP_SUBTREE: указывает, что подкаталоги должны быть пропущены для обхода.
    4. SKIP_SIBLINGS: указывает на то, что обход должен быть остановлен в текущем каталоге и каталогах одного уровня с ним. Если это значение возвращается из preVisitDirectory(), то вложенные файлы/каталоги не обходятся и postVisitDirectory() не срабатывает. Если это значение возвращается из visitFile (), то остальные файлы каталога не обходятся. Если он возвращается из postVisitDirectory (), то остальные каталоги того же уровня не будут обходиться.

Доработка копирования файлов

Возвращаясь к «глупому» копированию каталога в котором что-то есть — используя полученные знания можно реализовать его более логично, относительно результата, ожидаемого пользователем:

В методе preVisitDirectory() происходит копирование посещаемого каталога и аналогично копируется файл в методе visitFile(). Чтобы получить новый путь назначения, используется метод relativize() из класса Path.

Поиск файлов

Поняв принципы обхода дерева файлов, можно легко организовать поиск нужного файла. При поиске конкретного файла/каталога можно проверять соответствие имени файла/каталога с искомым с помощью метода visitFile () или preVisitDirectory (). Однако, если необходимо найти все файлы, соответствующие некоторому шаблону (например, все исходные файлы Java или XML-файлы ), то лучше использовать использовать универсальный символ (glob) или регулярное выражение (regex). Тут пригодится интерфейс PathMatcher. Данный интерфейс реализован для каждой файловой системы и вы можете получить экземпляр этого типа из класса FileSystem используя метод getPathMatcher().

Перед тем, как перейти к примеру стоит пояснить шаблоны Glob (похожи на regex, но немного проще. Если понятие regex для Вас ново, то ближе с ним можно ознакомится здесь — Регулярные выражения в Java). В таблице ниже приведены шаблоны, поддерживаемые glob-синтаксисом:

Шаблон Описание
* Соответствует любой строке любой длины, даже пустой.
** Как и *, но выходит за границы каталогов.
? Любой одиночный символ.
[XYZ] Либо X, либо Y, либо Z.
1 Соответствует любому символу от 0 до 5.
[a–z] Любой строчный символ латинского алфавита.
Либо XYZ или ABC.

Ниже приведён пример кода, который находит все java-файлы в указанном каталоге. Для поиска используется glob-шаблон, но в коментариях приведён regex-шаблон, который можно использовать для этой же цели. Обратите внимание, что в строке с шаблоном сначала указывается его тип (glob или regex), потом ставится доеточие, а потом пишется сам шаблон. Ради интереса можете запустить этот же код убрав первую часть с двоеточием, но сначала просто попробуйте скомпилировать и выполнить:

Отслеживание изменений в каталоге

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

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

Рассмотрим API этого сервиса на примере. Для этого примера используйте каталог в котором при выполнении программы в бесконечном цикле Вы будете создавать, изменять и удалять файлы — действия должны выводится на консоли. Код ниже:

Пояснения к коду:

  • Получение экземпляра WatchService осуществляется через вызов метода newWatchService() из класса FileSystem, который в свою очередь был получен из объекта класса Path через вызов метода getFileSystem(). Но его (экземпляр FileSystem) можно получить и через вызов метода getDefault() из класса FileSystems, т.е. можно заменить watchService = path.getFileSystem().newWatchService();
    на
    watchService = FileSystems.getDefault().newWatchService();
  • Далее происходит регистрация каталога на данном сервисе. Из объекта Path можно вызвать два метода register(), которые различаются принимаемыми параметрами. В нашем случае — это метод принимающий объект сервиса и переменное число параметров, определяющих отслеживаемые события.
  • OVERFLOW указывает, что несколько уведомлений о событиях были отброшены или пропущены. ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY соответствуют созданию, редактированию и удалению.
  • В цикле происходит ожидание события. Здесь можно использовать три метода для уведомления:
    • Метод poll() возвращает ключи очереди, если они есть, в противном случае сразу завершается.
    • Метод poll(long, TimeUnit) возвращает ключи очереди, если они есть, в противном случае ждёт указанное число единиц времени.
    • Метод take() возвращает ключ очереди, если он доступен, иначе ждёт, пока он не будет доступен.

    Основное различие между poll() и take() в том, что poll() это неблокирующий вызов, а take() — блокирующий.

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

    Paths

    Paths — это совсем простой класс с единственным статическим методом get() . Его создали исключительно для того, чтобы из переданной строки или URI получить объект типа Path . Другой функциональности у него нет. Вот пример его работы: Не самый сложный класс, да? :) Ну, раз уж мы получили объект типа Path , давай разбираться, что это за Path такой и зачем он нужен :)

    getFileName() — возвращает имя файла из пути;

    getParent() — возвращает «родительскую» директорию по отношению к текущему пути (то есть ту директорию, которая находится выше по дереву каталогов);

    getRoot() — возвращает «корневую» директорию; то есть ту, которая находится на вершине дерева каталогов;

    startsWith() , endsWith() — проверяют, начинается/заканчивается ли путь с переданного пути:

    Вывод в консоль:

    testFile.txt
    C:\Users\Username\Desktop
    C:\
    true
    false

    Обрати внимание на то, как работает метод endsWith() . Он проверяет, заканчивается ли текущий путь на переданный путь. Именно на путь, а не на набор символов.

    Сравни результаты этих двух вызовов:

    Вывод в консоль:

    false
    true

    В метод endsWith() нужно передавать именно полноценный путь, а не просто набор символов: в противном случае результатом всегда будет false, даже если текущий путь действительно заканчивается такой последовательностью символов (как в случае с “estFile.txt” в примере выше).

    Кроме того, в Path есть группа методов, которая упрощает работу с абсолютными (полными) и относительными путями.

    boolean isAbsolute() — возвращает true, если текущий путь является абсолютным:

    Вывод в консоль:

    Path normalize() — «нормализует» текущий путь, удаляя из него ненужные элементы. Ты, возможно, знаешь, что в популярных операционных системах при обозначении путей часто используются символы “.” (“текущая директория”) и “..” (родительская директория). Например: “./Pictures/dog.jpg” обозначает, что в той директории, в которой мы сейчас находимся, есть папка Pictures, а в ней — файл “dog.jpg”

    Так вот. Если в твоей программе появился путь, использующий “.” или “..”, метод normalize() позволит удалить их и получить путь, в котором они не будут содержаться:

    Вывод в консоль:

    C:\Users\Java\examples
    C:\Users\examples

    Path relativize() — вычисляет относительный путь между текущим и переданным путем.

    Вывод в консоль:

    Username\Desktop\testFile.txt

    Files

    С помощью метода filter() отбираем только те строки из файла, которые начинаются с «Как».

    Проходимся по всем отобранным строкам с помощью метода map() и приводим каждую из них к UPPER CASE.

    Объединяем все получившиеся строки в List с помощью метода collect() .

    preVisitDirectory() — логика, которую надо выполнять перед входом в папку;

    visitFileFailed() — что делать, если вход в файл невозможен (нет доступа, или другие причины);

    postVisitDirectory() — логика, которую надо выполнять после захода в папку.

    Приготовьтесь написать несколько базовых статей. Java 7 уже давно отсутствует, но многие программисты Java все еще остаются на основе ранней версии Java 5 или Java 6 и никогда не использовали новые возможности Java 7. В этой статье описывается, как использовать пакет NIO Java 7 для чтения атрибутов файлов и изменения атрибутов файлов. Подробности следующие:

    1. Чтение атрибутов файла

    2. Другой способ чтения атрибутов файлов

    3. Измените атрибуты файла.

    NEW CREATION TIME:2013-12-10T15:04:26.159Z
    OLD CREATION TIME:2013-04-09T05:45:30.685152Z

    4. Вы также можете изменить другие атрибуты файла.

    5. Другой способ изменить атрибуты файла.

    Вывод:
    NEW LAST-MODIFIED-TIME:2013-12-10T15:13:07.134Z
    OLD LAST-MODIFIED-TIME:2013-12-10T13:35:08.438828Z

    Интеллектуальная рекомендация


    Использование Jmeter Beanshell

    Использование Beanshell Что такое бобовая скорлупа Beanshell - это язык сценариев, который полностью соответствует синтаксису Java, и имеет свои собственные встроенные объекты и синтаксис Beans.

    Android получить информацию о приложении (пакете) и размере кэша при использовании PackageManager

    [size = medium] [b] класс PackageManger [/ b] [/ size] Описание: Получить информацию об установленных приложениях. Его можно получить с помощью метода [color = red] getPackageManager () [/ color]. Общ.


    UITextView добавить текст заполнителя

    UITextView - это простой и легкий в использовании метод для добавления текста заполнителя. В основном используйте drawRect: метод для рисования текста заполнителя. Создайте файл CustomPlaceholderTextV.


    Разница между равным и "= mh-excerpt">

    1. Разница между равным и "==" (1) Роль равенства заключается в сравнении одинакового содержимого двух независимых объектов., Другими словами, это для сравнения значений двух объектов. I1, i.

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

    В данной теме расписаны базовые методы класса File , который есть частью системы ввода/вывода Java. Для рассмотренных методов приведены примеры с объяснениями.

    Содержание

    • 1. Создание экземпляра класса File . Конструкторы класса
    • 2. Метод getName() . Получить имя файла или каталога
    • 3. Метод getPath() . Получить имя файла
    • 4. Метод isAbsolute() . Определить, указан ли полный путь к файлу
    • 5. Метод getAbsolutePath() . Получить полный путь к файлу
    • 6. Методы canRead() , canWrite() . Определение того, допускает ли файловый объект чтение и запись
    • 7. Метод exists() . Определение наличия файла (каталога)
    • 8. Метод isDirectory() . Определить, связан ли файловый объект с директорием
    • 9. Метод isFile() . Определить, связан ли файловый объект с файлом
    • 10. Метод isHidden() . Определить, есть ли файловый объект скрытым
    • 11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом
    • 12. Метод delete() . Удаление файла
    • 13. Метод mkdir() . Создание папки или каталога
    • 14. Метод mkdirs() . Создание нескольких вложенных папок
    • 15. Метод renameTo() . Переименование файла
    • 16. Метод getTotalSpace() . Определение объема диска
    • 17. Метод getFreeSpace() . Определить свободное место на диске
    • 18. Метод getUsableSpace() . Определение полезного места на диске

    Поиск на других ресурсах:

    1. Создание экземпляра класса File . Конструкторы класса

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

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

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

    Пример.

    Результат выполнения программы

    2. Метод getName() . Получить имя файла или каталога

    Метод getName() возвращает имя файла или каталога, с которым связана файловая переменная. Если абсолютный путь к имени файла (каталога) содержит несколько уровней вложения, то возвращается непосредственно имя этого файла (каталога). Общая форма использования метода следующая

    • name – переменная типа String , которая есть результатом выполнения метода;
    • fileObj – файловый объект, связанный с файлом или каталогом.

    Пример.

    • path – строка типа String , что есть именем файла (каталога), которое было задано при создании файловой переменной fileObj .

    Пример.

    4. Метод isAbsolute() . Определить, указан ли полный путь к файлу

    Метод isAbsolute() позволяет определить, указан ли полный путь к файлу при создании файлового объекта в конструкторе класса File . Общая форма использования метода следующая

    • res – результат, который равен true , если при создании файловой переменной fileObj был задан абсолютный путь.

    Пример.

    5. Метод getAbsolutePath() . Получить полный путь к файлу

    Метод getAbsolutePath() возвращает полный путь к файлу. Общая форма использования метода следующая

    • path – строка типа String , которая есть результатом;
    • fileObj – файловый объект, который связан с файлом, для которого нужно определить абсолютный путь.

    Пример.

    Результат работы программы

    7. Метод exists() . Определение наличия файла (каталога)

    Метод exists() предназначен для определения существования файла, ассоциированного с файловым объектом. Общая форма использования метода следующая

    • res – результат работы метода. Если res = true , то заданный файл существует;
    • fileObj – объект, который проверяется.

    Пример.

    8. Метод isDirectory() . Определить, связан ли файловый объект с директорием

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

    • res – значение типа bool . Если res=true , то файл есть директорием;
    • fileObj – файловый объект, который проверяется.

    Пример.

    9. Метод isFile() . Определить, связан ли файловый объект с файлом

    Метод isFile() возвращает true , если файловый объект связан с файлом. Общая форма использования метода следующая

    • res – результат вычисления. Если файловый объект есть файлом, то res = true ;
    • fileObj – файловый объект.

    Пример.

    10. Метод isHidden() . Определить, есть ли файловый объект скрытым
    • fileObj – файловый объект;
    • res – результат работы метода. Если res = true , то файловый объект связан со скрытым файлом.

    Пример.

    11. Метод length() . Определить размер в байтах файла, который связан с файловым объектом

    Метод length() предназначен для определения размера файла и имеет следующую общую форму

    Пример.

    Результат работы программы

    12. Метод delete() . Удаление файла

    Метод delete() используется для удаления файла. Общая форма использования метода

    • fileObj – файловый объект, который связан с файлом, который нужно удалить;
    • res – результат выполнения метода. Если res = true , то удаление файла состоялось успешно.

    Пример.

    13. Метод mkdir() . Создание папки или каталога

    Метод mkdir() используется для создания папки (каталога). Общая форма использования метода следующая

    • res – результат типа bool . Если каталог создан успешно, то res = true , в противном случае res = false ;
    • fileObj – объект типа File , который связан с именем создаваемого каталога.

    Пример. Создается каталог с именем 123 в текущем каталоге.

    Результат работы программы

    14. Метод mkdirs() . Создание нескольких вложенных папок

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

    Общая форма использования метода следующая:

    • fileObj – файловый объект, который содержит строку с именем или именами папок, которые нужно создать;
    • res – результат выполнения метода. Если последовательность папок создана успешно, то res = true .

    Пример.

    15. Метод renameTo(File). Переименование файла

    Метод renameTo() предназначен для переименования файла. Общая форма использования метода следующая

    • res – результат выполнения метода. Если файл переименован успешно, то res = true , иначе res = false ;
    • f1 – файловая переменная, соответствующая файлу-источнику, который нужно переименовать;
    • f2 – файловая переменная, соответствующая новому имени файла-источника f1 после его переименования.

    Пример.

    16. Метод getTotalSpace() . Определение объема диска

    С помощью метода getTotalSpace() можно определить общий размер носителя (диска) в байтах. Метод возвращает результат типа long . Общая форма использования метода следующая

    Читайте также: