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):
ownerBasicFileAttributeView z dodatkowymi atrybutami readonly, hidden, archive, systemBasicFileAttributeView 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ę.