1. Pathклас
Ако искате да напишете програма, която прави нещо с файлове на диска, това е доста лесно. Java има много класове, които ви помагат да работите Howто със самите файлове, така и с тяхното съдържание.
Ранните версии на Java използваха класове като Fileи FileInputStreamза работа с файлове. Класът обаче Fileвече е остарял и не се препоръчва за използване. Разбира се, все още може да го срещнете в code, параметри на метод or конструктори на класове.
Още от самото начало ще започнем да се учим How да работим с файлове с помощта на Pathкласа. Pathе класът, който замени File. Той е по-безопасен и по-ефикасен.
Pathклас
Технически, Pathне е клас - това е интерфейс. Това се прави, за да се позволи записването на наследник на Pathкласа за всяка операционна система (и файлова система).
Windows има един стандарт за писане на пътеки към файлове, а Linux има друг. Разбира се, в света има много други операционни системи и всяка има свой собствен стандарт.
Ето защо Pathинтерфейсът се използва навсякъде в методите, които работят с файлове, въпреки че в действителност работата се случва чрез неговите наследствени класове: WindowsPath, UnixPath, ...
Създаване на Pathобект
За да създадете Pathобект (който всъщност ще бъде обект на WindowsPathкласа наследник), трябва да използвате израз като този:
Path name = Path.of(path);
Къде nameе името на Pathпроменлива и pathе пътят до file (or директорията), включително името на file (or директорията). И ofе статичен метод на Pathкласа.
Методът of()се използва за създаване на WindowsPathобекти, ако програмата работи под Windows. Ако програмата работи на Linux, тогава UnixPathсе създават обекти. Не можете да създадете Pathобект с помощта на code като .new Path()
Примери:
| Код | Забележка |
|---|---|
|
Път до file |
|
Път до директорията |
Не е необходимо файлът (or директорията) да съществува, за Pathда съществува валиден обект. Може би просто искате да създадете файл... PathОбектът е като разширен String: той не е свързан с конкретен файл на диска — той просто съхранява определен път на диска. Това е.
2. Методи от Pathвида
Интерфейсът Pathима доста интересни методи. Най-интересните са представени в tableта по-долу.
| Метод | Описание |
|---|---|
|
Връща родителската директория |
|
Връща името на file без директорията |
|
Връща основната директория от път |
|
Проверява дали текущият път е абсолютен |
|
Преобразува пътя в абсолютен |
|
Премахва заместващи знаци в име на директория. |
|
Конструира нов абсолютен път от абсолютни и относителни пътища. |
|
Получава относителен път от два абсолютни пътя. |
|
Проверява дали текущият път започва с даден път |
|
Проверява дали текущият път завършва с даден път |
|
Разделя пътя на части, използвайки /като разделител. Връща броя на частите. |
|
Разделя пътя на части, използвайки /като разделител. Връща част по нейния индекс. |
|
Разделя пътя на части, използвайки /като разделител. Връща подпътеката, която съответства на дадения интервал. |
|
Преобразува Pathобект в отхвърлен Fileобект |
|
Преобразува Pathобект в URIобект |
По-долу е дадено кратко описание на съществуващите методи.
3. Разделяне на път на части
Методът getParent()връща пътя, който сочи към родителската директория за текущия път. Независимо дали този път е директория or файл:
| Код | Стойност |
|---|---|
|
|
|
|
|
|
Методът getFileName()връща едно име на файл (or директория) - Howвото и да идва след последния разделител:
| Код | Стойност |
|---|---|
|
|
|
|
|
|
Методът getRoot()връща пътя до основната директория:
| Код | Стойност |
|---|---|
|
|
4. Абсолютни и относителни пътища
Има два вида пътища: абсолютни и относителни. Абсолютният път започва от основната директория. За Windows това може да е c:\папката; за Linux — /директорията
Относителният път е значим спрямо няHowва директория. Тоест, това е като края на пътя, но без начало. Можете да превърнете относителен път в абсолютен и обратно
boolean isAbsolute()метод
Методът проверява дали текущият път е абсолютен
| Код | Стойност |
|---|---|
|
|
|
|
Path toAbsolutePath()метод
Преобразува пътя в абсолютен. Ако е необходимо, добавя текущата работна директория към нея:
| Код | Стойност |
|---|---|
|
|
|
|
Path normalize()метод
В пътя, instead of име на директория, можете да напишете "..", което означава връщане една директория назад . Нормализирането премахва тези неща. Примери:
| Код | Стойност |
|---|---|
|
|
|
|
Path relativize(Path other)метод
Методът relativize()ви позволява да конструирате "разликите между пътищата": един път спрямо друг
| Код | Стойност |
|---|---|
|
|
|
|
|
IllegalArgumentException: двата пътя имат различен "корен" (различни дискове) |
Path resolve(Path other)метод
Методът resolve()прави обратното на relativize(): той изгражда нов абсолютен път от абсолютен и относителен път.
| Код | Стойност |
|---|---|
|
|
|
|
toFile()метод
Методът връща остарял Fileобект, който съхранява същия файлов път като Pathобекта.
toURI()метод
Методът преобразува пътя в standardн URI и връща обект, който съдържа пътя към file:
| Път до file | URI към file |
|---|---|
|
|
GO TO FULL VERSION