2010-01-04 5 views
14

자바 애플리케이션을 사용하여 숨겨진 폴더를 만들고 싶습니다. 이 프로그램은 플랫폼에서 작동해야합니다. 그래서 어떻게 숨겨진 폴더를 만들 수있는 프로그램을 작성합니다.자바를 사용하여 숨겨진 폴더를 만드는 방법

나는이 숨겨져 있지 않은 디렉토리를 생성

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

사용하여 시도했다.

+0

물어 봐도 될까요? 그리고 숨겨진 것은 다른 운영 체제에서 다른 개념이라는 것을 알고 있습니까? –

+3

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

답변

14

개념은 매우 OS 별 및 자바 API를 통해 액세스 할 수 없습니다.

리눅스에서는 이름이 점으로 시작하는 파일과 폴더는 많은 프로그램에서 기본값으로 숨겨져 있습니다.

Windows에서 "숨김"은 파일 시스템에 저장된 특수 플래그입니다. 변경을위한 Java API는 없습니다. Runtime.exec()을 사용하여 attrib 명령을 실행할 수 있습니다.

+0

이 방법이 유용하지만, 아래에서 언급 한 Pal의 Java 7 방법을 사용하는 것이 좋습니다. 런타임 해킹을 의지하고 (런타임 해킹을하기 전에 윈도우가 있는지 확인하십시오) –

4

Unix에서 파일이나 디렉토리를 숨기려면 그 이름이 마침표 (.)로 시작해야합니다.

Windows에서 파일을 숨기려면 해당 속성에 '숨김'비트를 설정해야합니다. Java 표준 라이브러리는이 기능을 제공하지 않지만 (file.isHidden() 메소드가 있음에도 불구하고), 나는 어떤 도구도 알지 못합니다.

6

는 * nix에서 스크립트에서 당신은 단지 파일의 이름을 변경 그래서 숨김 파일/폴더의

filename = ".".filename; 
3

교차 플랫폼 요구 사항에 맞는 팩토리 패턴을 사용할 수 있습니다. 그러나 다른 모든 사람들이 말한 바 있습니다. 나는 당신이 원한다고 느낄 수 있기 때문에 한 줄의 코드로 그 코드를 만들 수 없을 것 같습니다. 내 애도.

3

OS 작업 (물론 OS 상사 임). 그러나 attrib (Windows) 명령을 실행하고 OS (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 : 프로세스가 종료되지 않았습니다' –

26

당신은 당신과 같이 새로운 java.nio.file.attribute 패키지를 사용할 수있는 자바 7 사용하는 경우 : 당신이 이전 버전을 사용하는 경우,

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

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

에 대한 추가 정보를 참조하거나 자바를 사용하고 싶거나 다음을 시도하십시오 :

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 
관련 문제