2012-08-13 98 views
3

我正在尝试使用终端命令在osx上取消隐藏〜\ Library \文件夹的简单java程序。据我研究了从java运行系统命令的代码是 Runtime.getRuntime()。exec(); ,并且在我查看的每个地方都列出。从eclipse使用java运行Mac OSX命令

但是,我的程序不起作用。主要方法如下。

public static void main(String[] args) throws IOException { 

    String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"}; 
    try { 
     Runtime.getRuntime().exec(noHide); 
     System.out.println("library unhidden"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

该程序不会引发异常,编译并执行正常,但Library文件夹根本不会取消隐藏。无论我重新格式化cmd字符串。的格式没有下文的工作

String noHide = "chflags nohidden ~/Library"; 
String[] noHide = {"chflags", "nohidden","~/Library"}; 
String[] noHide = {"chflags"," " ,"nohidden"," ", "~/Library/"}; 

如果删除它们抛出异常(当然,不是字符串数组对象)的空间。我可以在osx终端上运行命令(chflags noHidden〜/ Library)。任何人有一个想法为什么?

回答

2

您需要使用您拥有的trycatch。但是,你main应该是这样的:

public static void main(String[] args) { 
    String[] noHide = {"chflags", "nohidden","~/Library"}; 
    try { 
     Runtime.getRuntime().exec(noHide); 
    } 
    catch (Exception e) { 
     } 
    } 

基本上,你不需要throws IOException。这对我很有用,所以如果它仍然不能在你的程序中运行,那么你设置的方式可能会有更大的问题。

+0

不起作用。同样的结果。 – pipsqueaker117 2012-08-13 17:55:01

+0

@ pipsqueaker117对不起,更正了我的答案,参见上文。 – Nathan 2012-08-13 17:55:38