Назад
Вперед
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 -".
Назад Вперед |