Potrzebuję plików i folderów ukrytych w systemach Windows i Linux. Wiem, że dodanie "." z przodu pliku lub folderu spowoduje, że będzie on ukryty w systemie Linux. Jak mogę ukryć plik lub folder w systemie Windows?Utwórz plik/folder ukryty w systemie Windows za pomocą Java
Odpowiedz
Dla Java 6 i poniżej,
Trzeba będzie użyć natywnego połączenia, tutaj jest jednym ze sposobów na okna
Runtime.getRuntime().exec("attrib +H myHiddenFile.java");
Należy nauczyć się trochę o Win32 API lub Java Native.
Funkcjonalność, że pragnienie jest cechą NIO.2 w nadchodzącym Java 7.
Oto artykuł opisujący w jaki sposób będzie on używany do czego potrzebujesz: Managing Metadata (File and File Store Attributes). Jest to przykład z DOS File Attributes:
Path file = ...;
try {
DosFileAttributes attr = Attributes.readDosFileAttributes(file);
System.out.println("isReadOnly is " + attr.isReadOnly());
System.out.println("isHidden is " + attr.isHidden());
System.out.println("isArchive is " + attr.isArchive());
System.out.println("isSystem is " + attr.isSystem());
} catch (IOException x) {
System.err.println("DOS file attributes not supported:" + x);
}
Ustawianie atrybuty mogą być wykonywane przy użyciu DosFileAttributeView
Biorąc pod uwagę te fakty, wątpię, że istnieje norma i elegancki sposób, aby to osiągnąć w Java 6 lub Java 5.
to co używam:
void hide(File src) throws InterruptedException, IOException {
// win32 command line variant
Process p = Runtime.getRuntime().exec("attrib +h " + src.getPath());
p.waitFor(); // p.waitFor() important, so that the file really appears as hidden immediately after function exit.
}
Java 7 można ukryć DOS plik w ten sposób:
Path path = ...;
Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS);
if (hidden != null && !hidden) {
path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS);
}
Wcześniejsze Java-y nie mogą.
Powyższy kod nie rzuci wyjątku w systemach plików innych niż DOS. Jeśli nazwa pliku zaczyna się kropką, to będzie również ukryta w systemach plików UNIX.
Metoda getAttribute (String, LinkOption) jest niezdefiniowana dla typu java.nio.file.Path (JDK 7u13) – Antonio
Antonio, tak mogło być w wersji roboczej Java 7, której użyłem. Widzę, że podobna funkcjonalność znajduje się teraz w pliku java.nio.file.Files. –
Możesz użyć 'Files.setAttribute', który zaakceptuje' Path', aby ustawić atrybut na. –
String cmd1[] = {"attrib","+h",file/folder path};
Runtime.getRuntime().exec(cmd1);
użyć tego kodu może rozwiązać Ci problemem
na okna, przy użyciu java NIO, pliki
Path path = Paths.get(..); //< input target path
Files.write(path, data_byte, StandardOpenOption.CREATE_NEW); //< if file not exist, create
Files.setAttribute(path, "dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); //< set hidden attribute
Dodaj opis tego, w jaki sposób wysłany kod odpowiada na pytanie użytkownika – Suever
Oto pełni compilable kod Java 7 próbka, która ukrywa dowolnego pliku w systemie Windows .
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributes;
class A {
public static void main(String[] args) throws Exception
{
//locate the full path to the file e.g. c:\a\b\Log.txt
Path p = Paths.get("c:\\a\\b\\Log.txt");
//link file to DosFileAttributes
DosFileAttributes dos = Files.readAttributes(p, DosFileAttributes.class);
//hide the Log file
Files.setAttribute(p, "dos:hidden", true);
System.out.println(dos.isHidden());
}
}
Aby sprawdzić, czy plik jest ukryty. Kliknij dany plik prawym przyciskiem myszy, a po egzekucji sąd zobaczy, że dany plik jest naprawdę ukryty.
- 1. Utwórz klasy Java za pomocą JaxB
- 2. Jednoznaczne polecenie "co java" w systemie Windows?
- 3. Wyłączanie urządzenia USB za pomocą oprogramowania w systemie Windows
- 4. Zapytania LDAP za pomocą UWP w systemie Windows 10 IoT
- 5. Uzyskiwanie strefy czasowej w systemie Windows za pomocą C++
- 6. Utwórz encję za pomocą EntityListener
- 7. Jak wykrywać aktywność użytkownika za pomocą usługi Java działającej w systemie Windows?
- 8. Utwórz bazę danych za pomocą WZP?
- 9. Wdróż i uruchom coś za pomocą Java w systemie UNIX
- 10. W jaki sposób klikasz element ukryty za pomocą Selenium WebDriver?
- 11. Jak zabić drzewo procesów w systemie Windows
- 12. Kompresja JavaScript w systemie Windows
- 13. Zmiany za pomocą Winspool.drv w systemie Windows 7 64-bitowe z Windows XP 32 bit
- 14. uprawnienie mklink w systemie Windows 8
- 15. Żądanie uprawnień administratora dla aplikacji Java w systemie Windows Vista
- 16. Utwórz interfejs API za pomocą CakePHP
- 17. Utwórz żądanie uwierzytelnienia SAML za pomocą WIF
- 18. Utwórz plik UTF-8 za pomocą HttpServletResponse
- 19. Utwórz bazę danych Postgres za pomocą pythona
- 20. Utwórz aplikację komputerową za pomocą PHP
- 21. Utwórz plik cookie za pomocą HttpServletRequest?
- 22. Utwórz plik hierarchii za pomocą perl
- 23. Utwórz nowy obiekt za pomocą odbicia?
- 24. Testowanie "Utwórz post" za pomocą Rspec
- 25. Utwórz półkę z książkami za pomocą UICollectionView
- 26. Nie można opublikować witryny internetowej w systemie Windows Azure za pomocą publikowania za pośrednictwem usługi VS2010
- 27. Utwórz dynamicznie klasę za pomocą zmiennej
- 28. Utwórz bazę danych za pomocą PDO bindParam
- 29. Utwórz pusty plik za pomocą python
- 30. Utwórz widok za pomocą klucza podstawowego?
"natywny" oznacza używasz kodu konkretnej platformy. 'exec()' uruchamia powłokę DOS/Windows, aby uruchomić program DOS/Windows. –
Jesteś oszczędzającym życie !!! –
co się stanie, gdy ten kod zostanie wykonany w systemie Linux? Lub jak mogę temu zapobiec? – Xerus