1. Клас Files
Для роботи з файлами є чудовий утилітний клас — java.nio.file.Files
. Він має методи буквально на всі випадки. Усі методи цього класу є статичними й працюють з об'єктами типу Path. Методів дуже багато, тому ми розглянемо лише основні:
Метод | Опис |
---|---|
|
Створює новий файл зі шляхом path |
|
Створює нову директорію |
|
Створює кілька директорій |
|
Створює тимчасовий файл |
|
Створює тимчасову директорію |
|
Видаляє файл або директорію, якщо вони порожні |
|
Копіює файл |
|
Переміщує файл |
|
Перевіряє, чи є шлях директорією, а не файлом |
|
Перевіряє, чи є шлях файлом, а не директорією |
|
Перевіряє, чи існує об'єкт за вказаним шляхом |
|
Повертає розмір файлу |
|
Повертає весь вміст файлу у вигляді масиву байтів |
|
Повертає весь вміст файлу у вигляді рядка |
|
Повертає весь вміст файлу у вигляді списку рядків |
|
Записує у файл масив байтів |
|
Записує у файл рядок |
|
Повертає колекцію файлів (і піддиректорій) зі вказаної директорії |
2. Створення файлів і директорій
Створювати файли й директорії дуже просто. Переконайтеся в цьому на прикладах.
Код | Примітка |
---|---|
|
Створює файл |
|
Створює директорію |
|
Створює директорію й усі потрібні піддиректорії, якщо їх немає. |
3. Копіювання, переміщення й видалення
Копіювати, переміщати й видаляти файли теж дуже легко. Директорій це також стосується, але вони мають бути порожніми.
Код | Примітка |
---|---|
|
Копіює файл |
|
Переміщує й перейменовує файл |
|
Видаляє файл |
4. Перевірка типу файлу та його наявності
Коли ви отримуєте іззовні певний шлях, то, напевно, хочете дізнатися, чи це файл, чи директорія. І чи існують такий файл або директорія взагалі?
Для цього теж є спеціальні методи. Так само можна легко дізнатися довжину файлу:
Код | Примітка |
---|---|
|
|
|
|
|
|
|
|
5. Робота із вмістом файлу
І нарешті, є ціла низка методів, які дають змогу легко прочитати або записати вміст файлу. Приклад:
Код | Опис |
---|---|
|
Читаємо вміст файлу у вигляді списку рядків Виводимо рядки на екран |
6. Отримання вмісту директорії
І на останок ще один цікавий метод — отримання списку файлів і піддиректорій у вказаній директорії.
Для цього є спеціальний метод — newDirectoryStream()
, який повертає спеціальний об'єкт типу DirectoryStream<Path>
. Він має ітератор (!), і за допомогою цього ітератора можна отримати список усіх файлів і піддиректорій у вказаній директорії.
Це простіше, ніж здається:
Код | Опис |
---|---|
|
Отримуємо об'єкт зі списком файлів Цикл за списком файлів |
Об'єкт DirectoryStream<Path>
має дві властивості. По-перше, у нього є ітератор, який повертає шляхи до файлів, і ми можемо використовувати цей об'єкт у циклі for-each
.
А по-друге, цей об'єкт є потоком даних, тому його потрібно закривати за допомогою методу close()
або використовувати в операторі try
-with-resources.
7. Метод Files.newInputStream
Починаючи з версії Java 5 класи FileInputStream
і FileOutputStream
стали вважатися застарілими. Одним з їхніх недоліків є те, що під час створення об'єктів цих класів одразу відбувається створення файлів на диску. У такому разі викидаються всі можливі помилки, пов'язані зі створенням файлів.
Зрештою це було визнано не найкращим рішенням. Тому для створення об'єктів-файлів рекомендується використовувати методи утилітного класу java.nio.Files
.
Порівняймо старий і новий підходи до створення файлів:
Було |
---|
|
Стало |
|
Так само замінили й метод FileOutputStream
:
Було |
---|
|
Стало |
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ