我正在用以下代码更改文件权限:
Runtime.getRuntime().exec("chmod 600 '/home/user/Desktop/file'");
但没有效果!
代码执行前后报告:
-rw-rw-r-- 1 evir evir 7928 Jul 31 14:54 file
怎么了?
最佳答案
您所问的问题对您的系统和环境非常具体。
因此,我将回答更广泛的问题-并教一个人钓鱼-指出你应该看看输出,以确定发生了什么(或没有)。
首先,您应该将从Process
返回的exec
实例分配给一个变量。火与忘是很好的,当它工作,但如果它不留下你绝对没有办法确定发生了什么。
第一站是调用process.waitFor()
——等待进程结束,并返回它的退出代码。如果该值为非零,则它无法正确运行;根据进程的不同,这甚至可能会告诉您遇到了哪类错误。
如果这不足以解决您的问题,您将需要查看输出到stdout
和stderr
的内容。您可以通过分别调用process.getInputStream()
和process.getErrorStream()
来获取读取这些流的句柄。一旦有了这些流,就可以正常地从中读取字节。
(请注意,不管您是否打算处理数据,您确实应该从这些流中读取数据。写入足够输出以填满缓冲区的进程可能会阻塞,直到“另一端”(you!)已经读过一些了。尽管这不太可能是问题所在。)
现在,您可以访问退出状态、STDUT和STDRR流——事实上,如果您在控制台中运行该进程,您将获得的所有内容。现在剩下的就是利用这些信息来解决你的具体问题…