2010-01-04 352 views
14

我想使用java应用程序创建隐藏文件夹。该计划应该跨平台运作。那么如何编写一个可以创建隐藏文件夹的程序。如何使用java隐藏文件夹

我一直在使用

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

它创建为非隐藏的目录尝试。

+0

我可以问一下你为什么需要这个?你知道隐藏在不同的操作系统中是不同的概念吗? – 2010-01-04 13:15:33

+3

重复:http://stackoverflow.com/questions/1294989/make-a-file-folder-hidden-on-windows-with-java – 2010-01-04 13:15:42

回答

14

隐藏文件/文件夹的概念是非常特定于操作系统和通过Java API不能访问。

在Linux中,许多程序默认情况下隐藏名称以点开头的文件和文件夹 - 这很容易。

在Windows中,“隐藏”是存储在文件系统中的特殊标志。没有用于更改它的Java API;您可以使用Runtime.exec()来运行attrib命令。

+0

虽然这个工程,我建议你使用下面提到的帕尔的Java 7方法诉诸运行时间破解(在进行运行时间破解之前检查并确认它是windows) – 2013-02-05 22:34:25

4

要在Unix下隐藏文件或目录,其名称需要以句点(.)开头。

要在Windows下隐藏文件,您需要在其属性中设置“隐藏”位。 Java标准库不提供此功能(虽然有file.isHidden()方法),并且我不亲自知道任何工具。

6

下* nix中你只需重命名文件,以便

filename = ".".filename; 
3

您可以使用某种形式的工厂模式来满足您的交叉平台需求。但是其他人都说。我担心你不能用一行代码完成它,因为我可以只是觉得你想要它。节哀顺变。

3

这是OS作业(当然你是OS老板)。但是你可以执行attrib(Windows)命令并告诉操作系统(Windows)你想让一个文件夹“隐藏”。

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

在退出代码之前需要等待进程退出。 'proc.waitFor()'应该用来代替'proc。exitValue()',因为后者导致'IllegalThreadStateException:进程没有退出' – 2012-10-14 16:29:44

26

如果您使用的是Java 7,您可以使用新的java.nio.file.attribute包,像这样:

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

http://download.oracle.com/javase/tutorial/essential/io/fileAttr.html

查看更多信息或者,如果您使用的是旧版本的Java和/或想要使用Runtime,试试这个:

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

查看更多关于cmdattrib的信息。

0

尝试以下步骤:

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