Crea un file / cartella nascosto su Windows con Java

Devo rendere nascosti file e cartelle sia su Windows che su Linux. So che aggiungendo un ‘.’ in primo piano un file o una cartella lo renderà nascosto su Linux. Come faccio a hide un file o una cartella su Windows?

Per Java 6 e versioni successive,

Dovrai utilizzare una chiamata nativa, ecco un modo per Windows

Runtime.getRuntime().exec("attrib +H myHiddenFile.java"); 

Dovresti imparare un po ‘su win32-api o Java Native.

La funzionalità che desideri è una funzionalità di NIO.2 nel prossimo Java 7.

Ecco un articolo che descrive come verrà utilizzato per ciò di cui hai bisogno: Gestione dei metadati (attributi File e File Store) . C’è un esempio con gli attributi del file DOS :

 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); } 

L’impostazione degli attributi può essere eseguita utilizzando DosFileAttributeView

Considerando questi fatti, dubito che esista un modo standard ed elegante per farlo in Java 6 o Java 5.

Java 7 può hide un file DOS in questo modo:

 Path path = ...; Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS); if (hidden != null && !hidden) { path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); } 

I precedenti Java-s non possono.

Il codice precedente non genererà un’eccezione su sistemi di file non DOS. Se il nome del file inizia con un punto, sarà nascosto anche sui sistemi di file UNIX.

questo è quello che uso:

 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. } 

su Windows, usando java nio, Files

 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 

Ecco un esempio di codice Java 7 completamente compilabile che nasconde un file arbitrario su 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 eg 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()); } } 

Per controllare il file è nascosto. Fai clic destro sul file in questione e vedrai dopo l’esecuzione del tribunale che il file in questione è veramente nascosto.

inserisci la descrizione dell'immagine qui

 String cmd1[] = {"attrib","+h",file/folder path}; Runtime.getRuntime().exec(cmd1); 

Usa questo codice per risolvere il tuo problema