Crear un archivo / carpeta oculto en Windows con Java

Necesito hacer que los archivos y las carpetas estén ocultos tanto en Windows como en Linux. Sé que se agrega un ‘.’ al frente de un archivo o carpeta lo ocultará en Linux. ¿Cómo puedo ocultar un archivo o una carpeta en Windows?

Para Java 6 y abajo,

Necesitará usar una llamada nativa, aquí hay una manera para Windows

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

Deberías aprender un poco sobre win32-api o Java Native.

La funcionalidad que desea es una característica de NIO.2 en el próximo Java 7.

Aquí hay un artículo que describe cómo se usará para lo que necesita: Administración de Metadatos (Atributos de File and File Store) . Hay un ejemplo con Atributos de archivo de 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); } 

Los atributos de configuración se pueden hacer usando DosFileAttributeView

Teniendo en cuenta estos hechos, dudo que haya una forma estándar y elegante de lograr eso en Java 6 o Java 5.

Java 7 puede ocultar un archivo DOS de esta manera:

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

Los primeros Java-s no pueden.

El código anterior no generará una excepción en sistemas de archivos que no sean DOS. Si el nombre del archivo comienza con un punto, entonces también estará oculto en los sistemas de archivos UNIX.

esto es lo que 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. } 

en windows, usando java nio, Archivos

 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 

Aquí hay un ejemplo de código de Java 7 totalmente comstackble que oculta un archivo arbitrario en 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()); } } 

Para verificar el archivo está oculto. Haga clic derecho en el archivo en cuestión y verá después de la ejecución de la corte que el archivo en cuestión está realmente oculto.

enter image description here

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

Use este código, podría resolver su problema