Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Выбор файлов
Простейший редактор текста
Копирование файлов UNICODE
Сохранение объекта Java в файле
Произвольные классы и файлы
Буферизация потоков
Разбор конфигура-
ционного файла

Работа с консолью
Работа с классом PrintWriter
Разбор строк класса String
Загрузка и просмотр изображений
Потоки в оперативной памяти
Конвейерные потоки
Комбинирование двух потоков
Комбинирование нескольких потоков
Поиск слова в текстовом файле
Произвольный доступ к файлу
Информация о файле
Работа с каталогами
Просмотр содержимого каталога
Просмотр каталога с фильтром
Панель для выбора каталога
Список системных свойств
Сохранение списка системных свойств
Контрольная сумма файла
Копирование, переименование, удаление файлов
Архивы ZIP
Создание архива ZIP
Распаковка архива ZIP
Обход дерева каталогов

Назад Вперед

7.20. Просмотр содержимого каталога

В примере показан способ организации просмотра содержимого каталогов с помощью методов класса File.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

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

Класс File позволяет организовать просмотр каталогов.

С помощью метода list вы можете получить список содержимого каталога, соответствующего данному объекту класса File. В классе File предусмотрено два варианта этого метода - без параметра и с параметром:

public String[] list();
public String[] list(FilenameFilter filter);

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

Второй позволяет получить список не всех объектов, хранящихся в каталоге, а только тех, что удовлетворяют условиям, определенным в фильтре filter класса FilenameFilter. Мы рассмотрим использование фильтров в следующем разделе нашей библиотеки примеров.

Описание примера

Просмотр каталогов выполняется в цикле. Программа запрашивает с консоли полный путь к каталогу, а затем показывает его содержимое:

Enter full path ('quit' to exit):
e:\sun
-dir- Articles
MAP1.BMP
plan.txt
-dir- Samples
Enter full path ('quit' to exit):

Перед именем каталога вставляется строка "- dir -".

Для выхода из цикла достаточно вместо пути к каталогу ввести строку "quit".

Рассмотрим исходный текст приложения.

Вся работа выполняется методом main внутри цикла while.

Прежде всего на экран выводится приглашение для ввода пути к исследуемому каталогу:

System.out.println(
  "Enter full path ('quit' to exit): ");

Полученная строка сохраняется в переменной s:

String s;
s = new String(getKbdString());

Здесь для чтения строки с системной консоли мы вызвали метод getKbdString, определенный в нашем приложении.

Если пользователь ввел строку "quit", цикл завершает свою работу:

if(s.equals("quit"))
  break;

Далее мы создаем для введенного пути объект класса File:

File f = new File(s);

Так как при вводе пути могли быть допущены ошибки, наша программа выполняет некоторые проверки.

Прежде всего мы проверяем существование указанного каталога:

if(!f.exists())
{
  System.out.println("\nNot found: " + s);
  continue;
}

Для этого вызывается метод exists. Если каталог не существует, мы повторяем запрос пути.

Аналогичные действия предпринимаются и в том случае, когда пользователь указал путь не к каталогу, а к файлу:

if(!f.isDirectory())
{
  System.out.println(
    "\nNot directory: " + s);
  continue;
}

Если путь к каталогу задан верно, наша программа создает и заполняет массив строк:

String[] sDirList = f.list();

Метод list записывает в массив sDirList строки имен объектов, расположенных в каталоге, который описывается объектом f.

Затем наша программа запускает цикл, в котором она перебирает элементы массива sDirList и выводит на консоль его содержимое:

int i;
for(i = 0; i < sDirList.length; i++)
{
  File f1 = new File(
    s + File.separator + sDirList[i]);
        
  if(f1.isFile())
    System.out.println(sDirList[i]);
  else  
    System.out.println(
      "-dir- " + sDirList[i]);
}

Для каждого элемента массива мы создаем объект класса File и проверяем, соответствует он файлу или каталогу. Если это каталог, при выводе к имени каталога добавляется префикс "- dir -".


Назад Вперед

[Назад]