2011-10-05 72 views
1
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”文件夹,而不是只读而不是系统文件夹,但它被创建为可见和只读。无法使用java的Runtime.getRuntime()隐藏文件夹。exec()

这是的System.out.println线的输出:

attrib +h -r -s D:\eclipse\bin\.data 

我也无法使用过程中的exitValue()方法,因为它总是抱怨:

java.lang.IllegalThreadStateException: process has not exited 

我做错了什么?

回答

2

您应该首先调用Process.waitFor()方法。此方法将阻止,直到attrib进程退出。进程在完成之前不会有退出代码。

+0

谢谢,使用我看到exitValue(这是0)的结果,但我仍然无法隐藏该文件夹。 0表示OK,不是吗? – osr

+0

@osr是0表示成功。通过资源管理器属性或目录检查dir实际上是否具有hidd属性。 – krock

+0

是的,我检查,它是如此不隐藏,我想知道是否有该文件夹是在bin目录内。也许eclipse触及它会在程序运行后立即返回到可见状态。我正在与... – osr

相关问题