„О, Риши! Здравей!“
"Здравей, Амиго! Как е животът?"
"Страхотно. Билаабо току-що ми каза куп интересни неща за File и How да работя с него."
— Както се случи, мисля, че имам Howво да добавя по тази тема.
"Наистина ли? Тогава съм целият в ушите."
„Добре, слушайте. Java непрекъснато се развива. Неговите разработчици непрекъснато търсят нови начини да правят различни неща по-ефективно. В Java 7 те добавиха алтернатива към класа File.“
"Алтернатива?"
„Да. Те взеха класа File като основа, добавиха някои нови неща, преименуваха методите и след това също го разделиха на две. Така че сега има два нови класа: Path и Files . Path всъщност е новият аналог на File и File е помощен клас (аналогично на класовете Arrays и Collections). Всички статични методи на класа File отиват там. Правейки го по този начин е „по-правилно“ от гледна точка на ООП."
„Е, ако е по отношение на ООП, тогава добре. И така, Howво се промени?“
„Първо, те решиха да не възпроизвеждат методите, които връщат String и File обекти. В класа Path всички методи връщат Path .
„Второ, те преместиха много статични помощни методи в класа Files .“
„Трето, стана по-удобно да се работи с относителни пътища.“
„Ето списък с методите:“
Методи на класа Path | Описание |
---|---|
boolean isAbsolute() |
Връща true, ако пътят е абсолютен. |
Path getRoot() |
Връща корена на текущия път, т.е. най-горната директория. |
Path getFileName() |
Връща името на file от текущия път. |
Path getParent() |
Връща директорията от текущия път. |
boolean startsWith(Path other) |
Проверява дали текущият път започва с преминатия път. |
boolean endsWith(Path other) |
Проверява дали текущият път завършва с преминатия път. |
Path normalize() |
Нормализира текущия път. Например преобразува «c:/dir/dir2/../a.txt» в «c:/dir/a.txt» |
Path relativize(Path other) |
Изчислява относителния път на два пътя, т.е. «разликата между пътищата» |
Path resolve(String other) |
Разрешава абсолютен път, като използва текущия и относителния път. |
URI toUri() |
Връща URI, ако текущият път/файл. |
Path toAbsolutePath() |
Преобразува пътя в абсолютен път, ако е относителен. |
File toFile() |
Връща обект File, който съответства на текущия обект Path. |
— А сегашният път — Howво е това?
„Това е пътят, който беше предаден на конструктора на обекта Path, чиито методи се извикват.“
"ОК. И така, Howви методи има класът Files ?"
„Бързате ли за някъде? Ще ви кажа веднага. Ето най-важните методи:“
Методи на класа Files | Описание |
---|---|
Path createFile(…) |
Създава файл на диск. |
Path createDirectory(…) |
Създава директория. |
Path createDirectories(…) |
Създава директория и всички нейни поддиректории. |
Path createTempFile(…) |
Създава временен файл. |
Path createTempDirectory(…) |
Създава временна директория. |
void delete(Path path) |
Изтрива файл. |
Path copy(Path source, Path target,…) |
Копира файл. |
Path move(Path source, Path target,…) |
Премества файл. |
boolean isSameFile(Path, Path) |
Сравнява два file. |
boolean isDirectory(Path) |
Пътят директория ли е? |
boolean isRegularFile(Path) |
Пътят файл ли е? |
long size(Path) |
Връща размера на file. |
boolean exists(Path) |
Съществува ли обект със същото име? |
boolean notExists(Path) |
Не съществува ли обект със същото име? |
long copy(InputStream, OutputStream) |
Копира byteове от InputStream към OutputStream. |
long copy(Path, OutputStream) |
Копира всички byteове от пътя към OutputStream. |
long copy(InputStream, Path) |
Копира всички byteове от InputStream към пътя. |
byte[] read(InputStream, int initialSize) |
Чете масив от byteове от InputStream. |
byte[] readAllBytes(Path path) |
Чете всички byteове от InputStream. |
List<String> readAllLines(Path path,..) |
Чете текстовия файл и връща списък с низове. |
Path write(Path path, byte[] bytes,…) |
Записва масив от byteове във файл. |
„Колко интересно! Толкова много готини функции и всичките на едно и също място.“
"Ами вижте. Да предположим, че искате да изтеглите файл от Интернет и след това да го изпратите на някого. За да направите това, е много удобно да създадете временен файл на диска и да запазите прочетените данни в него."
„Трудно ли е да изтеглите файл от интернет?“
„Много е просто. Вижте този пример:“
URL url = new URL("https://www.google.com.ua/images/srpr/logo11w.png");
InputStream inputStream = url.openStream();
Path tempFile = Files.createTempFile("temp-",".tmp");
Files.copy(inputStream, tempFile);
"И това е?"
"Да, Howво очаквахте да видите? Има само 4 реда."
" Ред 1. Създава URL обект, към който се предава URL addressът на file с изображение.
" Ред 2. В url обекта се отваря поток за четене на файл (InputStream).
" Ред 3. Методът createTempFile
се използва за създаване на временен файл.
" Ред 4. Методът Files.copy копира данни от inputStream
в tempFile
. Това е."
— Гениално!
"Страхотно. Радвам се, че ти харесва. Мисля, че можеш сам да разбереш останалите методи. И ще помоля Диего да ти даде няколко задачи за тях."
„Между другото, ето добра връзка към този материал“
GO TO FULL VERSION