Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова з Прикладного програмування.doc
Скачиваний:
30
Добавлен:
17.11.2019
Размер:
1.01 Mб
Скачать

2.2 Опис методу list()

Кілька методів класу Thread призначені для полегшення налагодження багато потокових додатків. Ці ресурси використовуються для виведення інформації про стан програми. Нижче наведено список методів класу Thread, що допомагають у процесі налаштування:

public String toString() повертає рядковий опис потоку, що включає його ім'я, пріоритет і назву групи.

public static void dumpStack() виводить у System.out зміст стека для поточного потоку. Також існує ряд налагоджувальних засобів для відстеження стану групи потоків. Наступні методи викликаються для об'єктів ThreadGroup та видають інформацію про їх стан:

public String toString() повертає рядковий опис групи, що включає її ім'я та пріоритет.

public synchronized void list() виводить у System.out список вміст групи та її підгруп.

Public Srting[] list() повертає список файлів в каталозі. Якщо об’єкт File являє собою не каталог, а дещо інше, передається null; в протилежному випадку повертається масив з іменами файлів. Список містить всі файли каталогу, за виключенням еквівалентів ''.'' та ''..'' (текучий та батьківський каталоги відповідно).

Часто вам буде потрібно обмежити кількість файлів методом list(), для включення тільки тих файлів, які відповідають певному шаблону імен, або фільтру. Для того, щоб зробити це, потрібно використати другу форму list():

String[] list(FilenameFilter FFObj) в цій формі FFObj — об’єкт класу, що реалізує інтерфейс FilenameFilter. FilenameFilter визначає єдиний метод accept(), що викликається по одному разу з кожним файлом в списку. Його загальна форма така:

public String[] list(FilenameFilter filter)

boolean accept (File directory, String filename)

Використовує заданий фільтр для зіставлення списку файлів в каталозі. Метод File.equals заслуговує особливу увагу. Два об’єкти File рахуються рівними в тому випадку, якщо співпадають їх повні імена, а не в тому, якщо вони представляють один і той самий файл в системі. Метод File.equals не може використовуватись для вияснення того, чи відповідають два об’єкти File одному і тому самому файлу. Для створення файлів використовуються об’єкти класу FileOutputStream або RandomAccessFile, а не об’єкти класу File. Нарешті залишається пам’ятати, що символ File.pathSeparatorChar та рядок File.pathSeparator являють собою символ, що розділяє каталоги чи файли в цілому імені. Наприклад в системі, UNIX для розділення компонентів повного імені використовують дві крапки: “.:/bin:/usr/bin”. Як наслідок, в системі UNIX символ pathSepar, a torChar являє собою дві крапки. Повне ім'я файлу зберігається в захищеному рядковому полі з ім'ям String. Підкласи File можуть у разі необхідності безпосередньо звертатися до цього поля або модифікувати його.

Інтерфейс FilenameFilter дозволяє створювати об'єкти, які фільтрують списки файлів і видаляють з них непотрібні. Він містить всього один метод: boolean accept (File dir, String name),що повертає true, якщо файл з ім'ям name в каталозі dir повинен входити в відфільтрований список.

Спочатку ми створюємо об'єкт File, котрий представляє собою каталог, що вказується в командному рядку. Потім ми конструюємо об'єкт DirFilter і передаємо його в якості параметра методу list. Для кожного імені, що входить до каталогу, list викликає метод accept об'єкта-фільтра і включає ім'я до списку лише в тому випадку, якщо об'єкт-фільтр повертає true. Для нашого методу accept значення true показує, що ім'я відповідає каталогу.

public void list(PrintStream out)

Виводить властивості зі списку в заданий потік PrintStream. Метод корисний під час налагодження програми. Після створення об'єкту неможливо змінити його допоміжний перелік властивостей. Якщо це все ж необхідно зробити, можна створити підклас класу Properties і змінити значення захищеного поля defaults, яке містить список властивостей по замовчуванню.

Існують варіації метода list(), так звана listFiles(), яка може виявитись дуже корисною. Сигнатури listFiles() показані нижче:

File[] listFiles()

File[] listFiles(FilenameFilter FFObj)

File[] listFiles(FilesFilter FObj)

Ці методи повертають список файлів в вигляді масиву об’єктів File замість рядків. Перший метод повертає всі файли, а другий — тільки ті, що задовольняють вказаному FilenameFilter. Крім повернення масиву об’єктів File, ці дві версії listFiles(), що працюють точно так як методи list().

Третя версія listFiles() повертає ті файли, в яких шляхові імена відповідають вказаному FileFilter. FileFilter визначає єдиний метод accept(), котрий викликається один раз для кожного файлу в списку. Його загальна форма така:

boolean accept(File path) метод accept() повертає true для файлів, що повинні бути включені в список(тобто ті, що відповідають аргументу path), а також false — для тих, котрі повинні бути виключені.