#java #runtime.exec
#java #runtime.exec
Вопрос:
if(!dataFolder.isHidden())
if(System.getProperty("os.name").toLowerCase()
.indexOf("windows") > -1){
String command = "attrib h -r -s " dataFolder.getAbsolutePath();
Runtime.getRuntime().exec(command);
System.out.println(command);
}
Я запускаю приведенный выше код, и я никак не могу заставить его работать. Я хочу сделать папку «.data» скрытой, не доступной только для чтения, а не системной папкой, но она создается видимой и доступной только для чтения.
Это вывод строки System.out.println:
attrib h -r -s D:eclipsebin.data
Я также не могу использовать метод exitValue() процесса, потому что он всегда жалуется на:
java.lang.IllegalThreadStateException: process has not exited
Что я делаю не так?
Ответ №1:
Сначала вы должны вызвать Process.waitFor()
метод. Этот метод будет блокироваться до завершения attrib
процесса. У процесса не будет кода выхода, пока он не завершится.
Комментарии:
1. Спасибо, используя это, я получил результат от exitValue (который равен 0), но я все еще не могу скрыть папку. 0 означает OK, не так ли?
2. @osr да 0 означает успех. Проверьте, что каталог действительно имеет атрибут hidd через свойства проводника или каталог.
3. да, я проверил, и это так не скрыто, мне интересно, связано ли это с тем, что эта папка находится внутри каталога bin. Возможно, eclipse касается его и возвращает его в видимое состояние сразу после запуска программы. Я соглашусь с этим…