Мне нужно сделать файлы и папки скрытыми как на Windows, так и на Linux. Я знаю, что добавление '.' перед файлом или папкой он будет скрыт в Linux. Как сделать файл или папку скрытыми в Windows?
Сделать файл/папку скрытой в Windows с Java
Ответ 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);
Используйте этот код, который может решить вашу проблему.