Programming: Java - Ласкаво просимо в світ Java
Робота з файлами і каталогами за допомогою класу File
У попередніх розділах ми розглянули класи, призначені для читання і запису потоків. Однак часто виникає необхідність виконання і таких операцій, як визначення атрибутів файлу, створення або видалення каталогів, видалення файлів, отримання списку всіх файлів в каталозі і так далі. Для виконання всіх цих операцій в додатках Java використовується клас з ім'ям File.
Створення об'єкта класу File
У вас є три можливості створити об'єкт класу File, викликавши для цього один з трьох конструкторів:
Перший з цих конструкторів має єдиний параметр - посилання на рядок шляху до файлу або каталогу. За допомогою другого конструктора ви можете вказати окремо каталог dir і ім'я файлу, для якого створюється об'єкт в поточному каталозі. І, нарешті, третій конструктор дозволяє вказати повний шлях до каталогу і ім'я файлу.
Якщо першому з перерахованих конструкторів передати посилання зі значенням null, виникне виключення NullPointerException.
Користуватися конструкторам дуже просто. Ось, наприклад, як створити об'єкт класу File для файлу c: \ autoexec.bat і каталогу d: \ winnt:
Визначення атрибутів файлів і каталогів
Після того як ви створили об'єкт класу File, неважко визначити атрибути цього об'єкта, скориставшись відповідними методами класу File.
Перевірка існування файлу або каталогу
За допомогою методу exists ви можете перевірити існування файлу або каталозі, для якого був створений об'єкт класу File:
Цей метод можна застосовувати перед створенням потоку на базі класу FileOutputStream, якщо вам потрібно уникнути випадкового перезапису існуючого файлу. У цьому випадку перед створенням вихідного потоку класу FileOutputStream слід створити об'єкт класу File, вказавши конструктору шлях до файлу, а потім перевірити сущестованія файлу методом exists.
Перевірка можливості читання і запису
Методи canRead і canWrite дозволяють перевірити можливість читання з файлу і запису в файл, відповідно:
Їх корисно застосовувати перед створенням відповідних потоків, якщо потрібно уникнути виникнення виключень, пов'язаних зі спробою виконання доступу недозволеного типу. Якщо доступ дозволений, ці методи повертають значення true, а якщо заборонений - false.
Визначення типу об'єкта - файл або каталог
За допомогою методів isDirectory і isFile ви можете перевірити, чому відповідає створений об'єкт класу File - каталогу або файлу:
Отримання імені файлу або каталогу
Метод getName повертає ім'я файлу або каталогу для заданого об'єкта класу File (ім'я виділяється з шляху):
Отримання абсолютного шляху до каталогу
Метод getAbsolutePath повертає абсолютний шлях до файлу або каталогу, який може бути машинно-залежним:
Визначення типу зазначеного шляху - абсолютний або відносний
За допомогою методу isAbsolute ви можете визначити, чи відповідає даний об'єкт класу File файлу або каталогу, заданому абсолютним (повним) шляхом, або відносним шляхом:
Визначення шляху до файлу або каталогу
Метод getPath дозволяє визначити машинно-незалежний шлях файлу або каталогу:
Визначення батьківського каталогу
Якщо вам потрібно визначити батьківський каталог для об'єкта класу File, то це можна зробити методом getParent:
Визначення довжини файлу в байтах
Довжину файлу в байтах можна визначити за допомогою методу length:
Визначення часу останньої модифікації файлу або каталогу
Для визначення часу останньої модифікації файлу або каталогу ви можете викликати метод lastModified:
Зауважимо, однак, що цей метод повертає час в відносних одиницях з моменту запуску системи, тому його зручно використовувати тільки для відносних порівнянь.
Отримання текстового представлення об'єкту
Метод toString повертає текстовий рядок, що представляє об'єкт класу File:
Отримання значення хеш-коду
Метод hashCode повертає значення хеш-коду, відповідного об'єкту File:
Видалення файлів і каталогів
Для видалення непотрібного файлу або каталогу ви повинні створити відповідний об'єкт File і потім викликати метод delete:
За допомогою методів mkdir і mkdirs можна створювати нові каталоги:
Перший з цих методів створює один каталог, другий - все підкаталоги, що ведуть до створюваному каталогу (тобто повний шлях).
Перейменування файлів і каталогів
Для перейменування файлу або каталогу ви повинні створити два об'єкти класу File, один з яких відповідає старому імені, а другий - новому. Потім для перовго з цих об'єктів потрібно викликати метод renameTo, вказавши йому як параметр посилання на другий об'єкт:
У разі успіху метод повертає значення true, при виникненні помилки - false. Може також виникати виняток SecurityException.
Порівняння об'єктів класу File
Для порівняння об'єктів класу File ви повинні використовувати метод equals:
Зауважимо, що цей метод порівнює шляхи до файлів і каталогів, але не самі файли або каталоги.
Отримання списку вмісту каталогу
За допомогою методу list ви можете отримати список вмісту каталогу, відповідного даному об'єкту класу File. У класі File передбачено два варіанти цього методу - без параметра і з параметром:
Перший з цих методв повертає масив рядків з іменами вмісту каталогу, не включаючи поточний каталог і батьківський каталог. Другий дозволяє отримати список не всіх об'єктів, що зберігаються в каталозі, а тільки тих, що задовольняють умовам, визначеним у фільтрі filter класу FilenameFilter.