2010-01-04 35 views
14

Quiero crear una carpeta oculta usando la aplicación java. Ese programa debería funcionar en toda la plataforma. Entonces, ¿cómo escribir un programa que puede crear una carpeta oculta?Cómo hacer una carpeta oculta usando java

He intentado usar

File newFile = new File("myfile"); 
newFile.mkdir(); 

Se crea un directorio que no está oculto.

+0

Puedo preguntar por qué es necesario esto? ¿Y sabes que oculto es un concepto diferente en diferentes sistemas operativos? –

+3

duplicado: http://stackoverflow.com/questions/1294989/make-a-file-folder-hidden-on-windows-with-java –

Respuesta

14

El concepto de archivos ocultos/carpetas es muy operativo específico y no es accesible a través de la API de Java.

En Linux, los archivos y carpetas cuyo nombre comienza con un punto se ocultan de manera predeterminada en muchos programas; hacerlo es fácil.

En Windows, "oculto" es un indicador especial almacenado en el sistema de archivos. No hay API de Java para cambiarlo; puede usar Runtime.exec() para ejecutar el comando attrib.

+0

Mientras esto funciona, recomiendo utilizar el método Java 7 de Pal mencionado a continuación antes recurriendo al truco de tiempo de ejecución (y verifica que sean las ventanas antes de hacer el truco de tiempo de ejecución) –

4

Para hacer que un archivo o directorio esté oculto bajo Unix, su nombre debe comenzar con un punto (.).

Para ocultar un archivo en Windows, debe establecer el bit 'oculto' en sus atributos. La biblioteca estándar de Java no ofrece esta capacidad (aunque hay un método file.isHidden()), y no conozco ninguna herramienta que sí lo haga.

6

bajo * nix que acaba de cambiar el nombre del archivo para que

filename = ".".filename; 
3

Puede usar algún tipo de patrón de fábrica para sus necesidades de conformado transversal. Pero lo que todos los demás dijeron. Me temo que no puedes hacer que funcione con una sola línea de código, ya que puedo sentir que lo deseas. Mis condolencias.

3

ese es el trabajo del sistema operativo (y usted es el jefe del sistema operativo, por supuesto). Pero puede ejecutar el comando attrib (Windows) y decirle al sistema operativo (Windows) que desea hacer una carpeta "oculta".

public class Main { 

    public static void main(String[] args) { 
     try 
     {    
      Runtime rt = Runtime.getRuntime(); 
      //put your directory path instead of your_directory_path 
      Process proc = rt.exec("attrib -s -h -r your_directory_path"); 
      int exitVal = proc.exitValue(); 
     } catch (Throwable t) 
      { 
      t.printStackTrace(); 
      } 

    } 
} 
+0

Es necesario esperar a que el proceso salga antes de tomar su código de salida. 'proc.waitFor()' debe usarse en lugar de 'proc.exitValue() ', ya que este último causa un' IllegalThreadStateException: el proceso no ha salido ' –

26

Si está utilizando Java 7 se puede utilizar el nuevo paquete java.nio.file.attribute así:

Path path = FileSystems.getDefault().getPath("/j", "sa"); 
Files.setAttribute(path, "dos:hidden", true); 

Ver más información en http://download.oracle.com/javase/tutorial/essential/io/fileAttr.html

O, si está utilizando una versión anterior de Java y/o quiere hacerlo usando Runtime, intente esto:

Process process = Runtime.getRuntime().exec("cmd.exe /C attrib -s -h -r your_path"); 

Ver más información en cmd y attrib.

0

intentar los siguientes pasos:

1. make a folder with extension **.jad** and move your videos,photos, etc 
    on that folder.. 
2. now create same folder with extenson **.jar** (ex- if u create 
    videos.jad then create videos.jar) 
3. finished .. Videos.jad will hide .. Delete the .jar .jad will come 
    again 
Cuestiones relacionadas