Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

3 Работа с локальной файловой система

В предыдущих разделах рассматривались классы, предназначенные для чтения и записи потоков. Однако часто возникает необходимость выполнения и таких операций, как определение атрибутов файла, создание или удаление каталогов, удаление файлов, получение списка всех файлов в каталоге и т.д.

Для выполнения всех этих операций в приложениях Java используется класс с именем File.

3.1 Работа с файлами и каталогами

Создать объект класса File можно при помощи вызова одного из конструкторов:

public File(File dir, String name)

public File(String path);

public File(String path, String name);

Первый конструктор имеет можно указать отдельно каталог и имя файла, для которого создается объект; второй конструктор имеет один параметр - строку пути к каталогу или файлу; третий конструктор позволяет указать полный путь к каталогу и имя файла.

После создания объекта класса File нетрудно определить атрибуты этого объекта, воспользовавшись следующими методами этого класса:

  • exist() - проверяет существование файла или каталога.

  • canRead() - проверяет возможность чтения из файла.

  • canWrite() - проверяет возможность записи в файл.

  • isDirectory() - проверка того, соответствует ли созданный объект каталогу.

  • isFile() - проверка того, соответствует ли созданный объект файлу.

  • getName() - возвращает имя файла или каталога (выделяет его из полного пути).

  • getAbsolutePath() - возвращает абсолютный путь к файлу или каталогу, который может быть машинно-зависимым.

  • getPath() - позволяет определить машинно-независимый путь к файлу или каталогу.

  • getParent() - определяет родительский каталог для объекта.

  • length() - определяет длину файла в байтах.

  • lastModified() - определяет время последней модификации файла или каталога (выдает время в относительных единицах с момента запуска системы).

С помощью методов mkdir() и mkdirs() можно создавать новые каталоги. Первый из них создает один каталог, второй - все подкаталоги, ведущие к создаваемому каталогу.

Для переименования файла или каталога необходимо создавать два объекта класса File, один из которых соответствует старому имени, а второй - новому. Затем для первого из этих объектов нужно вызвать метод renameTo(), передавая ему в качестве параметра ссылку на второй объект.

Для сравнения объектов класса File можно воспользоваться методом equals(). Нужно только отметить, что этот метод сравнивает пути к файлам и каталогам, но не сами файлы и каталоги.

Для получения списка содержимого каталога, соответствующего созданному объекту класса File, следует воспользоваться методом list(). Один вариант этого метода возвращает массив строк с именами содержимого каталога. Второй позволяет получить список не всех объектов, хранящихся в каталоге, а только тех, что удовлетворяют условиям, определенным в передаваемом этому методу фильтре FilenameFilter.

Перед тем, как передать методу list() фильтр, этот фильтр необходимо создать. Сначала необходимо определить новый класс, реализующий интерфейс FilenameFilter, переопределив в нем метод accept() класса FilenameFilter. В этом методе определяется, какие файлы будут выбираться из общего списка. Если имя файла подходит критерию отбора, то метод accept() должен возвратить значение true, если не подходит - значение false. Например, создадим класс, определяющий фильтр на основе расширения файла:

public class ExtFilter implements FilenameFilter

{ private String extension; // для хранения строки вида ".ext"

public ExtFilter(String ext); // e - расширение файла

{ extension="."+ext; // формирование строки

}

public boolean accept(File dir,String fileName)

{ // return true - для файлов, удовлетворяющих условию,

// иначе - return false

return(fileName.endsWith(extension); // только для файлов *.ext,

}

}

Передавая затем объект класса фильтров методу list() класса File, можно получить отфильтрованные элементы каталога, например:

ExtFilter txtFiles=new ExtFilter("txt"); // объект-фильтр

File dir=new File("\\tmp\\example"); // объект-каталог

// получение списка файлов с расширением .txt

String d[]=dir.list(txtFiles);

for(int i=0; i<d.length; i++) System.out.println("\t"+d[i]);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]