Доброго дня! В даній статті містить документація по конструкторам і методм класу File. Клас File призначений для абстрактного представлення імен файлів і директорій. Інтерфейси користувачів і операційні системи використовують системно-залені шляхи для іменування файлів і директорій. Абстрактний шлях має два компоненти:
  • необов'язковий системно-залежний префікс, наприклад, вказівник диску, символ "/" для кореневого каталогу систем Юнікс, або послідовність символів "\\\\" для UNC-шляхів компанії Майкрософт, і
  • пусту або деяку множину послідовності імен.
Перший ідентифікатор у абстрактному шляху може бути ім'ям директорії або, у випадку UNС-шляху компанії Майкрософт, ім'ям хоста. Кожне наступне ім'я у абстрактномушляху відображає директорію; останній ідентифікатор може також відображати директорію або ім'я файлу. Пустий абстрактний шлях немає префіксу і немає постлідовність іддентифікаторів. Перетворення рядку символів, які представляють шлях у або з абстрактного шляху являється системно залежним. Коли абстрактний шлях перетворюється в рядок символів, кожний ідентифікатор відокремлюється від інших однією копією стадартного розділювача. Стандартний розділювач визначається системним полем file.separator, і є доступним з публічних статичних полів separator і separatorChar поточного класу. Коли рядок символів, який представляє шлях файлової системи перетворюєтьс на абстрактний шлях, ідентифікатори у ньому моуть бути розділеними за допомогою стандартного символа-розділювача або будь-якого іншого символа, який підтримується відповідною підсистемою. Шлях у формі абстрактного об'єкта або рядка символів, може бути абсолютним або відносним. Абсолютний шлях файлової системи є повним у тому розумінні, що не потрібно більше ніякої інформації, для визначення місця дислокації файлу. На противагу, відносний шлях, повинен бути інтепретованим у термінах поточного місцезнаходження, або іншого шляху. За умовчанням, класи у пакеті java.io завжди отримують шляхи відносні до потчної директорії користувача. Назву поточної директорії можнао отримати з системного поля user.dir, і зазвичай являється директорією, в якій була запущена віртуальна машина Java. Батьківський елемент абстрактного шляху може буи визначеним за допомогою методу getParent() поточного класу і складатися з префіксу шляху і усіх елементів у послідовності ідентифікаторів шляху окрім останнього (поточного). Абсолютний шлях коної диреторії являється предком буль-якого об'єкту File з абсолютним абстрактним шояхом файлової системи, який розпочинається з абсолютного шляху директорії. Наприклад, шлях до директорії у вигяді рядка "/usr", являється предком шляху до директорії "/usr/local/bin". Концепція префіксу використовується для обробки кореневої директорії Юнікс-подібних платформ, і специфікаторів дисків, кореневі директорії і UNC-шляхи платформ компанії Майкрософт. Це робиться наступним чином:
  • Для Юнікс-подібних платформ, префікс абсолютного шляху завжди являється символом "/". Відносні шляхи не мають префіксів. Абстрактний шлях, який представляє кореневий каталог має префікс "/" і пусту множину ідентифікаторів імен.
  • Для платформ компанії Майкрософт, префікс файлового шляху, який містить ідентифікатор диску, складається з букви диску, після якої йде символ ":" і можливо два символи бекслешу "\\", якщо ім'я файлу є абсолютним. Префіксом UNC-шляху являється "\\\\"; ім'я машини і ім'я загальнодоступного ресурсу являються першими двома іменами у мнодині послідовностей ідентифікаторів.
Примірники даного класу можуть відображати реальний об'єкт файлової системи на подобі файлу або директорії, або посилатись на неіснуючий об'єкт. Якщо об'єкт все-таки існує в файловій системі тоді він розміщується на розділі файлової системи. Розділом являється специфічна для операційної системи порція простору збереження файлової системи. Один пристрій збереження (фізичний диск, flesh-пам'ять, CD-ROM) можуть містити множину розділів. Будь-який об'єкт буде розміщуватись на розділі, який названий предком абсолютної форми поточного шляху файлової системи. Файлова система може реалізовувати обмеження для операцій над об'єктами файлової системи, для таких як читання, запис і виконання. Дані обмеження загальновідомі в якості прав доступу до файлів. Файлова система може мати множинний набір прав доступу на один об'єкт. Наприклад, один набір може застосовуватись для власника об'єкта, інша може застосовуватись до усіх інших користувачів. Права доступу на об'єкт можуть спричинити помилкове завершшення деяких методів даного класу. Примірники класу File являються незмінними; тобто, як тільки ви створили один, його абстрактний шлях вже неможливо змінити. Пакунок java.nio.file визначає інтерфейси і класи до віртуальної машини Java для доступу до файлів, атрибутів файлів, і файлових систем. Дане API мможе бути використаним для подолання обмежень класу java.io.File. Метод toPath може використовуватись для отримання об'єкта інтерфейсу Path, який в свою чергу представляє абстрактний шлях файлової системи об'єкта File. Результуючий об'єкт може бути використаним разом з класом Files для забезпечення більш ефективного і обширного доступу до файлових операцій, атрибутів, операцій вводу/виводу, пр діагностуванні вийняткових операцій.

Статичні поля класу File

static String pathSeparator
Системно-залежний розділювач елементів шляху, представлений у вигляді рядка символів (з одним символом)
static char pathSeparatorChar
Системно-зележний розділювач елементів шоляху у вигляді символу.
static String separator
Системно-залежний розділювач імен.
static char separatorChar
Системно-залежний розділювач імен.

Конструктори класу File

File(File parent, String child)
Створює новий примірник коасу Filе з батьківського абстрактного шлях, і дочірнього шляху у вигляді рядка символів.
File(String pathname)
Створює новий примірник коласу File, перетворюючи даний шлях у фигляді примірника класу String у абстракний шлях.
File(String parent, String child)
Створює новий примірник класу File з батькіського і дочірнього шляху у вигляді рядка символів.
File(URI uri)
Створює новий примірник коасу File, перетворюючи даний шлях URI (Unique Resource Identifier) у абстрактний шлях.

Методи класу File

boolean canExecute()
Перевіряє чи програма може виконати файл за шляхом, вказаним у потосному прмірнику класу Path.
boolean canRead()
Перевіряє чи програма може читати файл вказаний у поточному примірнику коласа Path.
boolean canWrite()
Перевіряє чи може програма модифікувати файл, шлях до якого вказаний у поточнму примірнику.
int compareTo(File pathname)
Порівнює два абстрактні шляхи лексикографічно.
boolean createNewFile()
Автоматично створює новий пустий файл, шлях до якого міститься у абстрактному шляху тільки тоді, коли даний файл ще не існує.
static File createTempFile(String prefix, String suffix)
Створює пустий файл у стандартній директорії для тимчасових файлів, використовуючи наданий префікс для генерації його ім'я.
static File createTempFile(String prefix, String suffix, File directory)
Створює пустий файл у вказаній директорії, викорстовуючи надані префікс і суфікс у вигляді рядків символів для генерації його імені.
boolean delete()
Видаляє файл або директорію, які вказані у поточному примірнику класу File.
void deleteOnExit()
Даний метод спричиняє видалення файлу або директорії, які вказані за допомогою поточного примірника класу Path, після того як віртуальна машина завершить своє виконання.
boolean equals(Object obj)
Перевіряє поточний абстрактний шлях на рівність з переданим об'єктом.
boolean exists()
Перевіряє чи файл або директорія, вказані у поточному об'єкті, існують.
File getAbsoluteFile()
Повертає абсолютну форму поточного абстрактного шляху.
String getAbsolutePath()
Повертає абсолютний шлях поточного абстрактного шляху у вигляді рядка символів.
File getCanonicalFile()
Повертає канонічну форму поточного абстракного шляху.
String getCanonicalPath()
Повертає канонічне представлення поточного шляху у вигляді рядка символів.
long getFreeSpace()
Повертає кількість вільних байтів у розділі, на який посилається поточний примірник класу Path.
String getName()
Повертає ім'я шляху чи директорії, яка вказана у поточному абстрактному шляху.
String getParent()
Повертає батьківські елементи поточного абстрактного шляху, або null, якщо поточний шлях не має батьківської директорії.
File getParentFile()
Повертає батьківський абстрактний шлях поточного абстрактного шляху, або null, якщо поточний шлях немає батьківської директорії.
String getPath()
Перетворює цей абстрактний шлях у рядок символів.
long getTotalSpace()
Повертає розмір розділу, на який посилається поточний абстракний шлях.
long getUsableSpace()
Повертає кількість незайнятих байтів, доступних для поточної віртуальної машини, на розділі, в який посилається поточний примірник класу Path.
int hashCode()
Обчислює хеш-код для цього абстрактного шляху.
boolean isAbsolute()
Перевіряє чи поточний абстрактний шлях являється абсолютним.
boolean isDirectory()
Перевіряє чи файл, вказаний у поточному об'єкті являється директорією.
boolean isFile()
Перевіряє чи файл вказаний у поточному об'єкті являється звичайним файлом.
boolean isHidden()
Перевіряє чи файл вказаний у поточному об'єкті являється прихованим файлом.
long lastModified()
Повертає останній час, у який файл, який розміщується за поточним шляхом, був модифікованим.
long length()
Повертає розмір файлу, який розміщується за поточним абстрактним шляхом.
String[] list()
Повертає масив рядків символів, які містять файли і директорії, розміщені у директорії, вказаній поточним абстрактним шляхом.
String[] list(FilenameFilter filter)
Повертає масив об'єктів String, які містять імена файлів і директорій, розміщені у диреторії поточного абстрактного шляху і які задовільняють вказаний фільтер.
File[] listFiles()
Повертає масив абстрактних файлових шляхів, які представляють файли у директорії, шлях до якої міститься у поточному об'єкті.
File[] listFiles(FileFilter filter)
Повертає масив абстрактних шляхів, які представляють файли і директорії, які розміщені у директорії поточного абстрактного шляху і задовільняють умові фільтру.
File[] listFiles(FilenameFilter filter)
Повертає масив абстрактних шляхів, які відображають файли і директорії, які розміщені у директоії поточного абстрактного шляху і відповідають вказаному фільтру.
static File[] listRoots()
Повертає масив доступних кореневих елементів файлових систем.
boolean mkdir()
Створює диреторію, на яку вказується поточний абстрактний шлях.
boolean mkdirs()
Створює директорії, які вказані у поточному абстрактному шляху, включаючи будь-які відсутні прожні директорії шлязу.
boolean renameTo(File dest)
Перейменовує файл представлений данис абстрактним шляхом.
boolean setExecutable(boolean executable)
Метод, який встановлює право на виконання власником файлу, вказаного поточним абстрактним шляхом.
boolean setExecutable(boolean executable, boolean ownerOnly)
Встановлює дозволи на виконання власника або інших користувачів файлу, на який посилається поточний файл.
boolean setLastModified(long time)
Встановлює час останнього модифікування файлу або директорії, які вказані поточним абстрактним шляхом.
boolean setReadable(boolean readable)
Метод який встановлює права доступу на читання для власника файлу, представленого поточним абстрактним шляхом.
boolean setReadable(boolean readable, boolean ownerOnly)
Встановлює права читання для власника файлу або інших користувачів.
boolean setReadOnly()
Встановлює на файл або директорію заборону на запис.
boolean setWritable(boolean writable)
Метод, який встановлює права на запис власником файлу, який представляється поточним абстракним шляхом.
boolean setWritable(boolean writable, boolean ownerOnly)
Встановлює права на запис власником або іншими користувачами, файлу, який розміщений за поточним абстрактним шляхом.
Path toPath()
Повертає об'єкт класу java.nio.file.Path, який сконструйований з поточного абстрактного шляху.
String toString()
Повертає абстрактний шлях предсталений у вигляді рядка символів, який сконструйований з поточного об'єкту.
URI toURI()
Конструює файорве URI, яке представляє поточний абстрактний шлях.
URL toURL()
Застарілий метод. Не використовувати.

Пиклад

Розглянемо Java-код, який демонструє використання деяких вищенаведених методів.
import java.io.* ;
import java.nio.file.* ;
import java.net.URI ; /* об'єкт URI */

class MainClass
{
  public static void main (String[] opts)
  {
    File path = new File ("/usr/lib/jvm/java-7-openjdk-i386/bin/javac") ;
    File path2 = new File ("/") ;
    
    System.out.println ("Вказаний шлях: " + path.toString()) ;
    System.out.println ("getName(): " + path.getName()) ;
    System.out.println ("toURI(): " + path.toURI()) ;
    System.out.println ("getParent(): " + path.getParent()) ;
    System.out.println ("isFile(): " + path.isFile()) ;
    System.out.println ("isDirectory(): " + path.isDirectory()) ;
    System.out.println ("getParentFile().isDirectory(): " + path.getParentFile().isDirectory()) ;
    System.out.println ("isAbsolute(): " + path.isAbsolute()) ;
    System.out.println ("exists(): " + path.exists()) ;
    System.out.println ("exists(): " + path.exists()) ;
    System.out.println ("canExecute(): " + path.canExecute()) ;
    System.out.println ("canRead(): " + path.canRead()) ;
    System.out.println ("getTotalSpace(): " + path.getTotalSpace()) ;
    System.out.println ("getUsableSpace(): " + path.getUsableSpace()) ;
  }
}
Після компілювання даного коду і виконання в терміналі можна отримати наступне (клод міститься у файлі "MainClass.java"): java_file_class_simple_axample_output