web-dev-qa-db-ja.com

JavaでWindowsでファイル/フォルダーを非表示にします

WindowsとLinuxの両方でファイルとフォルダーを非表示にする必要があります。 「。」を追加することは知っていますファイルまたはフォルダーの前に置くと、Linuxでは非表示になります。 Windowsでファイルまたはフォルダーを非表示にするにはどうすればよいですか?

23
Kryten

Java 6以下の場合、

あなたはネイティブコールを使用する必要があります、これはWindows用の1つの方法です

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

Win32-apiまたはJava Nativeについて少し学ぶ必要があります。

22
Andrew

必要な機能は、次のJava 7.のNIO.2の機能です。

これは、必要なものにどのように使用されるかを説明する記事です: メタデータの管理(ファイルおよびファイルストアの属性)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);
}

属性の設定は DosFileAttributeView を使用して行うことができます

これらの事実を考慮すると、Java 6またはJava 5。

22
Marian

Java 7は次の方法でDOSファイルを非表示にできます。

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

以前のJavaはできません。

上記のコードは、DOS以外のファイルシステムでは例外をスローしません。ファイルの名前がピリオドで始まる場合、UNIXファイルシステムでも非表示になります。

15
Steve Emmerson

これは私が使用するものです:

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.
}
3
simonmc

windowsではJava nio、Files

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
3
redlasha

これは完全にコンパイル可能なJava 7コードサンプルで、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 e.g. 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());

    }
 } 

ファイルをチェックするには非表示になっています。問題のファイルを右クリックすると、裁判所の実行後、問題のファイルが本当に隠されていることがわかります。

enter image description here

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

問題を解決する可能性があるこのコードを使用してください

0