русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Робота з файловою системою. Клас File


Дата додавання: 2014-05-29; переглядів: 1154.


Якщо класи потоків здійснюють реальний запис і читання даних, то клас File - це допоміжний інструмент, покликаний забезпечити роботу з файлами й каталогами.

Об'єкт класу File є абстрактним поданням файлу й шляхи до нього. Він установлює тільки відповідність із ним, при цьому для створення об'єкта неважливо, чи існує такий файл на диску. Після створення можна виконати перевірку, викликавши метод exists, що повертає значення true, якщо файл існує. Створення або видалення об'єкта класу File жодним чином не відображається на реальних файлах. Для роботи із умістом файлу можна одержати екземпляри File/OStream.

Об'єкт File може вказувати на каталог (довідатися це можна шляхом виклику методу isDirectory). Метод list повертає список імен (масив String) файлів, що втримуються в ньому (якщо об'єкт File не вказує на каталог - буде повернутий null).

Наступний приклад демонструє використання об'єктів класу File:

import java.io.*;public class FileDemo { public static void findFiles(File file, FileFilter filter, PrintStream output) throws IOException{ if (file.isDirectory()) { File[] list = file.listFiles(); for (int i=list.length; ---іi>=0;) { findFiles(list[i], filter, output); } } else { if (filter.accept(file)) output.println("\t" + file.getCanonicalPath()); } } public static void main(String[] args) { class NameFilter implements FileFilter { private String mask; NameFilter(String mask) { this.mask = mask; } public boolean accept(File file){ return (file.getName().indexOf(mask)!=-1)?true:false; } } File pathFile = new File("."); String filterString = ".java"; try { FileFilter filter = new NameFilter(filterString); findFiles(pathFile, filter, System.out); } catch(Exception e) { e.printStackTrace(); } System.out.println("work finished"); }}

 

При виконанні цієї програми на екран будуть виведені назви (у канонічному виді) всіх файлів, з розширенням .java, що знаходяться в поточному каталозі й всіх його підкаталогах.

Для визначення того, що файл має розширення .java, використовувався інтерфейс FileFilter з реалізацією у вигляді внутрішнього класу NameFilter. Інтерфейс FileFilter визначає тільки один метод accept, що повертає значення, яке визначає, чи попадає переданий файл в умови фільтрації. Крім цього інтерфейсу, існує ще один різновид інтерфейсу фільтра - FilenameFilter, де метод accept визначений трохи інакше: він приймає не об'єкт файлу до перевірки, а об'єкт File, що вказує на каталог, де перебуває файл для перевірки, і рядок його назви. Для перевірки збігу, з урахуванням регулярних виражень, потрібно відповідним чином реалізувати метод accept. В конкретному наведеному прикладі можна було обійтися й без використання інтерфейсів FileFilter або FilenameFilter. На практиці їх можна використовувати для виклику методів list об'єктів File - у цих випадках будуть повернуті файли з урахуванням фільтра.

Також клас File надає можливість одержання деякої інформації про файл.

- методи canRead і canWrite - повертають boolean значення, чи можна буде додатку робити читання й зміну вмісту з файлу;.

- getName - повертає рядок - ім'я файлу (або каталогу);

- getParent, getParentName - повертають каталог, де файл перебуває у вигляді об'єкта й рядка назви File, відповідно;

- getPath - повертає шлях до файлу (при цьому в рядок перетвориться абстрактний шлях, на який указує об'єкт File);

- isAbsolutely - повертає boolean значення, чи є абсолютним шлях, яким зазначений файл. Визначення, чи є шлях абсолютним, залежить від системи, де запущена Java-Машина. Так, для Windows абсолютний шлях починається із вказівки диска, або символом '\'. Для Unix абсолютний шлях починається символом '/' ;

- isDirectory, isFile - повертає boolean значення, чи вказує об'єкт на каталог або файл, відповідно;

- isHidden - повертає boolean значення, чи вказує об'єкт на схований файл;

- lastModified - дата останньої зміни;

- length - довжина файлу в байтах.

Також можна змінити деякі властивості файлу - методи setReadOnly, setLastModified, призначення яких очевидно з назви. Якщо потрібно створити файл на диску, це дозволяють зробити методи createNewFile, mkDir, mkDirs. Відповідно, createNewFile створює порожній файл (якщо такий ще не існує), mkDir створює каталог, якщо для нього всі батьківські вже існують, а mkDirs створить каталог разом з усіма необхідними батьківськими.

Файл можна й видалити - для цього призначені методи delete і deleteOnExit. При виклику методу delete файл буде вилучений відразу ж, а при виклику deleteOnExit по закінченні роботи Java-машини (тільки при коректному завершенні роботи) скасувати запит уже неможливо.

Таким чином, клас File дає можливість досить повного керування файловою системою.


 


<== попередня лекція | наступна лекція ==>
Тема 14 Можливості Java для обміну і передачі інформації. Робота з файловою системою. Пакет java.io | Тема 15 Принципи та методи роботи з базами даних. Стандарт JDBC


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн