1. Filesклас

За работа с файлове има елегантен помощен клас — java.nio.file.Files. Има методи за всеки повод. Всички методи от този клас са статични и работят с обект Path. Има много методи, така че ще разгледаме само най-важните:
| Метод | Описание |
|---|---|
|
Създава нов файл, чийто път еpath |
|
Създава нова директория |
|
Създава множество директории |
|
Създава временен файл |
|
Създава временна директория |
|
Изтрива файл or директория, ако е празен |
|
Копира файл |
|
Премества файл |
|
Проверява дали пътят е директория, а не файл |
|
Проверява дали пътят е файл, а не директория |
|
Проверява дали обектът съществува на дадения път |
|
Връща размера на file |
|
Връща цялото съдържание на файл като масив от byteове |
|
Връща цялото съдържание на файл като низ |
|
Връща цялото съдържание на файл като списък от низове |
|
Записва масив от byteове във файл |
|
Записва низ във файл |
|
Връща колекция от файлове (и поддиректории) от дадената директория |
2. Създаване на файлове и директории
Файлове и директории се създават много лесно. Нека се убедим с няколко примера:
| Код | Забележка |
|---|---|
|
Създава файл |
|
Създава директория |
|
Създава директория и всички необходими поддиректории, ако не съществуват. |
3. Копиране, преместване и изтриване
Копирането, преместването и изтриването на файлове е също толкова лесно. Това важи и за директориите, но те трябва да са празни.
| Код | Забележка |
|---|---|
|
Копира файл |
|
Премества и преименува файл |
|
Изтрива файл |
4. Проверка на вида и съществуването на файл
Когато имате път, предоставен от някой друг, искате да знаете дали това е файл or директория. И въобще такъв файл/директория съществува or не?
За това също има специални методи. Можете също така лесно да разберете дължината на даден файл:
| Код | Забележка |
|---|---|
|
|
|
|
|
|
|
|
5. Работа със съдържанието на file
И накрая, има цяла серия от методи, които улесняват четенето or записването на съдържанието на файл. Пример:
| Код | Описание |
|---|---|
|
Прочетете съдържанието на file като списък от низове. Покажете низовете |
6. Получаване на съдържанието на директория
Най-интересният метод все още остава. Използва се за получаване на файлове и поддиректории в дадена директория.
Говорим за newDirectoryStream()метода, който връща специален DirectoryStream<Path>обект. Има итератор(!), който можете да използвате, за да получите всички файлове и поддиректории на дадена директория.
Това е по-лесно, отколкото звучи.
| Код | Описание |
|---|---|
|
Вземете обект със списък от файлове Превъртете списъка с файлове |
Обектът DirectoryStream<Path>има два свойства. Първо, той има итератор, който връща пътищата на файловете и можем да използваме този обект в for-eachцикъл.
И второ, този обект е поток от данни, така че трябва да бъде изрично затворен с помощта на close()метода or декларирана употреба вътре в try-with-resourcesблок.
7. Files.newInputStreamметод
Започвайки с Java 5, класовете FileInputStreamи FileOutputStreamса отхвърлени. Един от техните недостатъци беше, че когато се създават обекти от тези класове, файловете се създават веднага на диска. И всички изключения, свързани със създаването на файл, потенциално могат да бъдат хвърлени.
По-късно това беше признато за не най-доброто решение. Съответно се препоръчва използването на методите на java.nio.Filesпомощния клас за създаване на файлови обекти.
Ето сравнение между стария и новия подход за създаване на файлове:
| Преди |
|---|
|
| След |
|
И има подобна замяна за FileOutputStream:
| Преди |
|---|
|
| След |
|
GO TO FULL VERSION