WindowsとLinuxの両方でファイルとフォルダーを非表示にする必要があります。 「。」を追加することは知っていますファイルまたはフォルダーの前に置くと、Linuxでは非表示になります。 Windowsでファイルまたはフォルダーを非表示にするにはどうすればよいですか?
Java 6以下の場合、
あなたはネイティブコールを使用する必要があります、これはWindows用の1つの方法です
Runtime.getRuntime().exec("attrib +H myHiddenFile.Java");
Win32-apiまたはJava Nativeについて少し学ぶ必要があります。
必要な機能は、次の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。
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ファイルシステムでも非表示になります。
これは私が使用するものです:
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.
}
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
これは完全にコンパイル可能な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());
}
}
ファイルをチェックするには非表示になっています。問題のファイルを右クリックすると、裁判所の実行後、問題のファイルが本当に隠されていることがわかります。
String cmd1[] = {"attrib","+h",file/folder path};
Runtime.getRuntime().exec(cmd1);
問題を解決する可能性があるこのコードを使用してください