我有这个代码使外部文件不可见:
void hide(File src) throws InterruptedException, IOException {
// win32 command line variant
Process p = Runtime.getRuntime().exec("attrib +h " + src.getPath());
p.waitFor();
现在我不知道如何让文件可见(用户提供文件的路径)..
答案 0 :(得分:0)
应该与您拥有的代码几乎100%相同。而不是+h
它应该是-h
。 Here您可以找到有关attrib
命令的更多信息。语法是
ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [[drive:][path]filename] [/S]
+ Sets an attribute.
- Clears an attribute.
R Read-only file attribute.
A Archive file attribute.
S System file attribute.
H Hidden file attribute.
/S Processes files in all directories in the specified path.
答案 1 :(得分:0)
将exec("attrib +h " + src.getPath()
替换为exec("attrib -h " + src.getPath())
。
这将使属性从隐藏变为可见。
+r : Used to set the file attribute as read-only.
-r : Used to clear the read-only file attribute.
+a : Used to set the file attribute as archive.
-a : Used to clear the archive file attribute.
+s : Used to set the file attribute as a system file.
-s : Used to clear the system file attribute.
+h : Used to make the file attribute as hidden not visible to the user.
-h : Used to clear the hidden file attribute.
答案 2 :(得分:0)
这是一种古老的方法。您应该使用java.nio.file.Files.setFileAttribute()
,除非您使用的是早于7的Java版本。
Javadoc提供了将dos:hidden
设置为true
的示例。当然,相反的是将其设置为false
(更恰当地说,Boolean.FALSE
)。
这样你就不会创建另一个进程,这是一个相对昂贵的操作。
当然,请注意各种经过检查的例外情况。