Подтвердить что ты не робот

Сделать файл/папку скрытой в Windows с Java

Мне нужно сделать файлы и папки скрытыми как на Windows, так и на Linux. Я знаю, что добавление '.' перед файлом или папкой он будет скрыт в Linux. Как сделать файл или папку скрытыми в Windows?

4b9b3361

Ответ 1

Для Java 6 и ниже

Вам нужно будет использовать собственный вызов, вот один из способов для Windows

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

Вам нужно немного узнать о win32-api или Java Native.

Ответ 2

Функциональность, которую вы желаете, является функцией NIO.2 на предстоящей Java 7.

Здесь описывается, как он будет использоваться для того, что вам нужно: Управление метаданными (атрибуты файлов и файлов). Вот пример с DOS File Attributes:

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.

Ответ 3

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.

Ответ 4

это то, что я использую:

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

Ответ 5

на окнах, используя 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

Ответ 6

Вот полностью компилируемый образец кода 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());

    }
 } 

Чтобы проверить, что файл скрыт. Щелкните правой кнопкой мыши на файл, о котором идет речь, и после выполнения суда вы увидите, что файл, о котором идет речь, действительно скрыт.

введите описание изображения здесь

Ответ 7

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

Используйте этот код, который может решить вашу проблему.