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