【发布时间】:2010-01-04 13:08:46
【问题描述】:
我想使用 java 应用程序创建一个隐藏文件夹。该程序应该跨平台运行。那么如何编写一个可以创建隐藏文件夹的程序。
我尝试过使用
File newFile = new File("myfile");
newFile.mkdir();
它会创建一个不隐藏的目录。
【问题讨论】:
-
请问您为什么需要这个?你知道隐藏在不同的操作系统中是一个不同的概念吗?
我想使用 java 应用程序创建一个隐藏文件夹。该程序应该跨平台运行。那么如何编写一个可以创建隐藏文件夹的程序。
我尝试过使用
File newFile = new File("myfile");
newFile.mkdir();
它会创建一个不隐藏的目录。
【问题讨论】:
如果您使用的是 Java 7,则可以像这样使用新的 java.nio.file.attribute 包:
Path path = FileSystems.getDefault().getPath("/j", "sa");
Files.setAttribute(path, "dos:hidden", true);
在http://download.oracle.com/javase/tutorial/essential/io/fileAttr.html查看更多信息
或者,如果您使用的是旧版本的 Java 和/或想使用 Runtime 进行操作,请尝试以下操作:
Process process = Runtime.getRuntime().exec("cmd.exe /C attrib -s -h -r your_path");
【讨论】:
隐藏文件/文件夹的概念是非常特定于操作系统的,无法通过 Java API 访问。
在 Linux 中,名称以点开头的文件和文件夹在许多程序中默认隐藏 - 这样做很容易。
在 Windows 中,“隐藏”是存储在文件系统中的特殊标志。没有用于更改它的 Java API;您可以使用Runtime.exec() 来运行attrib 命令。
【讨论】:
在 *nix 下,您只需重命名文件,以便
filename = ".".filename;
【讨论】:
要在 Unix 下隐藏文件或目录,其名称需要以句点 (.) 开头。
要使文件在 Windows 下隐藏,您需要在其属性中设置“隐藏”位。 Java 标准库不提供此功能(尽管有一个 file.isHidden() 方法),而且我不知道有什么工具可以提供。
【讨论】:
您可以使用某种形式的工厂模式来满足您的跨平台需求。但是其他人都说了。恐怕你不能用一行代码来完成它,因为我能感觉到你想要它。我的哀悼。
【讨论】:
那是操作系统的工作(当然你是操作系统的老板)。但是您可以执行 attrib (Windows) 命令并告诉 OS(Windows) 您想要“隐藏”文件夹。
public class Main {
public static void main(String[] args) {
try
{
Runtime rt = Runtime.getRuntime();
//put your directory path instead of your_directory_path
Process proc = rt.exec("attrib -s -h -r your_directory_path");
int exitVal = proc.exitValue();
} catch (Throwable t)
{
t.printStackTrace();
}
}
}
【讨论】:
proc.waitFor() 而不是proc.exitValue(),因为后者会导致IllegalThreadStateException: process has not exited
尝试以下步骤:
1. make a folder with extension **.jad** and move your videos,photos, etc
on that folder..
2. now create same folder with extenson **.jar** (ex- if u create
videos.jad then create videos.jar)
3. finished .. Videos.jad will hide .. Delete the .jar .jad will come
again
【讨论】: