Frage

Ich brauche, um Dateien und Ordner auf Windows und Linux versteckt zu machen. Ich weiß, dass ein Anhang ‚‘ auf die Vorderseite einer Datei oder einen Ordner wird es auf Linux versteckt machen. Wie kann ich eine Datei oder einen Ordner versteckt unter Windows machen?

War es hilfreich?

Lösung

Für Java 6 und unten,

Sie müssen einen nativen Aufruf verwenden, hier ist eine Möglichkeit für Fenster

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

Sie sollten ein wenig über win32-api oder Java Native lernen.

Andere Tipps

Die Funktionalität, die Sie wünschen, ist eine Funktion von NIO.2 in der kommenden Java 7.

Hier ist ein Artikel, der beschreibt, wie wird es verwendet werden, was Sie brauchen: DOS Datei Attribute:

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);
}

Einstellung Attribute getan werden kann, mit DosFileAttributeView

In Anbetracht dieser Tatsachen, bezweifle ich, dass es eine Standard- und elegante Art und Weise, dass 5 in Java 6 oder Java zu erreichen.

Java 7 verstecken kann ein DOS-Datei auf diese Weise:

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

Frühere Java-s nicht.

Der obige Code wird nicht eine Ausnahme auf Nicht-DOS-Dateisysteme werfen. Wenn der Name der Datei mit einem Punkt beginnt, dann wird es auch auf UNIX-Dateisystemen ausgeblendet werden.

das ist, was ich benutze:

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

auf Fenster, mit 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

Hier ist ein vollständig übersetzbar Java 7 Codebeispiel, die eine beliebige Datei auf Windows versteckt.

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());

    }
 } 

Um zu überprüfen, die Datei versteckt ist. Rechtsklick auf die betreffende Datei und Sie werden nach der Ausführung des Gerichts, dass die betreffende Datei sehen ist wirklich versteckt.

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

Sie diesen Code verwenden, es könnte lösen Sie Problem

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top