2010-01-04 176 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