Java: Использование класса File
В отличие от большинства классов ввода/вывода, класс File языка Java работает не с потоками, а непосредственно с файлами. Данный класс позволяет получить информацию о файле: права доступа, время и дата создания, путь к каталогу. А также осуществлять навигацию по иерархиям подкаталогов.
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 FileExample {
public static void main(String[] args) {
File file = new File("src/io");
System.out.println("Имя файла: " + file.getName());
System.out.println("Путь: " + file.getPath());
System.out.println("Абсолютный путь: " + file.getAbsolutePath());
System.out.println("Родительский каталог: " + file.getParent());
System.out.println(file.exists() ? "Файл/каталог существует." : "Файл/каталог не существует.");
System.out.println(file.canWrite() ? "Файл/каталог доступен для редактирования."
: "Файл/каталог не доступен для редактирования.");
System.out.println(file.canRead() ? "Файл/каталог доступен для чтения." : "Файл/каталог не доступен для чтения.");
System.out.println((file.isDirectory() ? "Каталог." : "Не каталог."));
System.out.println(file.isFile() ? "Файл." : "Не файл.");
System.out.println(file.isAbsolute() ? "Абсолютный путь." : "Не абсолютный путь.");
System.out.println("Дата последнего редактирования: " + file.lastModified());
System.out.println("Размер: " + file.length() + " байт.");
}
}
Каталог - это тоже объект класса 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.printf("\t%s каталог%n", fileName);
} else {
System.out.printf("\t%s файл%n", fileName);
}
}
}
} else {
System.out.println(catalogName + " не является каталогом");
}
}
}
Please log in or register to have a possibility to add comment.