Witam,
Czy da się w Javie zmieniać atrybuty, a dokładniej atrybut pliku "ukryty"?
Wiem że mogę zmienić readonly albo executable ale czy da się plik za pomocą Javy ukryć lub odkryć?
Witam,
Czy da się w Javie zmieniać atrybuty, a dokładniej atrybut pliku "ukryty"?
Wiem że mogę zmienić readonly albo executable ale czy da się plik za pomocą Javy ukryć lub odkryć?
Windowsowe polecenie attrib, dla linuxa sprawdź + Runtime.getRuntime().exec("tutaj attrib z parametrami");
W Java7:
Files.setAttribute(sciezka, "dos:hidden", true);
Z atrybutami akurat ciężko o przenośność, bo różne FS to różne zasady.
Java od wersji 7 ma w standardzie kilka interfejsów rozszerzających AttributeView (konkretniej FileAttributeView):
owner
BasicFileAttributeView
z dodatkowymi atrybutami readonly
, hidden
, archive
, system
BasicFileAttributeView
z uprawnieniami posiksowymiKlasa Files to fasada ze statycznymi metodami delegującymi do odpowiedniego providera (instancja FileSystemProvider).
Do wyciągnięcia odpowiedniego FileAttributeView
mamy metodę Files.getFileAttributeView(Path path, Class<? extends FileAttributeView> type)
.
Zwraca null
, jeśli dany widok nie jest dostępny.
Do odczytu atrybutów i manipulacji nimi mamy metody Files.getAttribute(Path path, String attribute)
i Files.setAttribute(Path path, String attribute, Object value)
.
Rzucają UnsupportedOperationException
, jeśli widok nie jest dostępny.
Argument attribute
jest w postaci "[view:]attribute"
, gdzie view
to opcjonalna nazwa widoku (domyślnie basic
), a attribute
to nazwa atrybutu.
Przykład w poście u góry.
Oczywiście to rozwiązanie zadziała na windowsach, ale na linuksach już nie, bo tam pliki ukrywa się kropką w nazwie.
Z odczytem atrybutu już łatwiej, bo mamy metodę isHidden, która bierze to pod uwagę.