Урок 19

Класс File


В отличие от большинства классов ввода/вывода, класс File работает не с потоками, а непосредственно с файлами. Данный класс позволяет получить информацию о файле: права доступа, время и дата создания, путь к каталогу. А также осуществлять навигацию по иерархиям подкаталогов.

1. Конструкторы класса File

File(String path) - указывается путь к файлу
File(File dir, String name) - указывается объекта класса File (каталог) и имя файла
File(String dirPath, Sring name) - указывается путь к файлу и имя файла
File(URI uri) - указывается объекта URI, описывающий файл.

2. Методы класса File

Метод

Описание

getAbsolutePath() абсолютный путь файла, начиная с корня системы.
canRead() доступно для чтения
canWrite() доступно для записи
exists() файл существует или нет
getName() возвращает имя файла
getParent() возвращает имя родительского каталога
getPath() путь
lastModified() дата последнего изменения
isFile() объект является файлом, а не каталогом
isDirectory() объект является каталогом
isAbsolute() возвращает true, если файл имеет абсолютный путь
renameTo(File newPath) переименовывает файл. В параметре указывается имя нового имени файла. Если переименование прошло неудачно, то возвращается false
delete() удаляет файл. Также можно удалить пустой каталог

 

Пример 1. Получения информации о файле

import java.io.File;

public class FileDemo {
    public static void p(String s) {
        System.out.println(s);
    }

    public static void main(String[] args) {
        File f1 = new File("src/io");

        p("File Name: " + f1.getName());
        p("Path: " + f1.getPath());
        p("Abs Path: " + f1.getAbsolutePath());
        p("Parent: " + f1.getParent());
        p(f1.exists() ? "exists" : "does not exist");
        p(f1.canWrite() ? "is writeable" : "is not writeable");
        p(f1.canRead() ? "is readable" : "is not readable");
        p("is " + (f1.isDirectory() ? "" : "not" + " a directory"));
        p(f1.isFile() ? "is normal file" : "might be a named pipe");
        p(f1.isAbsolute() ? "is absolute" : "is not absolute");
        p("File last modified: " + f1.lastModified());
        p("File size: " + f1.length() + " Bytes");
    }
}

Каталог - это тоже объект класса File, который содержит список других файлов и каталогов. После создания объекта класса File, являющего каталогом, его метод isDirectory() вернёт значение true.

Для создания каталога можно использовать метод mkdir(), который вернёт true в успешном случае. Если указанный путь уже существует или каталог нельзя создать из-за отсутствия полного пути к нему, то вернётся false.

Метод mkdirs() создаёт сам каталог, так и всех его родителей.

Если вы хотите получить содержимое каталога, то можно вызвать метод list() без аргументов. Вам вернётся полный список (массив) имён файлов и каталогов, содержащихся в данном каталоге.

 

Есть ещё похожий метод listFiles(), который возвращает массив файлов (объектов, а не их имён).

Пример 2. Получение содержимого каталога

import java.io.File;

public class DirList {
    public static void main(String[] args) {
        String catalogName = "src";
        File catalog = new File(catalogName);

        if (catalog.isDirectory()) {
            System.out.println("Папка " + catalogName);
            String[] list = catalog.list();
            if (list != null) {
                for (String fileName : list) {
                    File file = new File(catalogName + "/" + fileName);
                    if (file.isDirectory()) {
                        System.out.println("\t" + fileName + " каталог");
                    } else {
                        System.out.println("\t" + fileName + " файл");
                    }
                }
            }
        } else {
            System.out.println(catalogName + " не является каталогом");
        }
    }
}


0 comments
Leave your comment: