以编程方式创建文件夹以及使用 java 将内容保存到该位置的权限
Posted
技术标签:
【中文标题】以编程方式创建文件夹以及使用 java 将内容保存到该位置的权限【英文标题】:Create folders programmatically along with permissions using java to save content to that location 【发布时间】:2012-12-28 20:06:17 【问题描述】:我的windows系统安装了xampp,linux系统安装了lampp。我想使用 java 在“http://localhost/”位置创建文件夹。我做了以下事情:
dirName = new File("http://localhost/"+name);
if(!dirName.exists())
dirName.mkdir();
有可能吗?这个想法是以编程方式将一些文件下载到该位置。下载工作正常,但如何创建文件夹以便我可以通过 http://example.com/name
访问它。这是跟踪用户相关内容所必需的。我可以访问已经安装了lampp的apache web服务器。如何创建文件夹并将下载内容保存到该文件夹,并以编程方式将权限分配给文件夹和其中的内容,以便可以使用 wget
方法从那里下载保存的内容。
【问题讨论】:
【参考方案1】:不要使用File
API。对于严重的文件系统工作,它充满了不当行为。
例如,如果目录创建失败,.mkdir()
方法将返回...一个布尔值!不抛出异常。
请改用Files。
例如,创建一个目录:
// Throws exception on failure
Files.createDirectory(Paths.get("/the/path"),
PosixFilePermissions.asFileAttribute(
PosixFilePermissions.fromString("rwxr-x---")
));
【讨论】:
函数Files.createDirectories
也会处理子文件夹,比如mkdirs()
。
如果 umask 比设置的更强,则忽略权限。【参考方案2】:
使用具有 PosixPermission 的 Java 文件。 [注意-Windows 不支持 PosixPermission]
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");
Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms));
【讨论】:
【参考方案3】:在 Java 中,您可以通过执行以下操作在系统上的任何可写目录中创建文件:
File file1 = new File("/var/www/newDirectory/");
file1.mkdirs();
然后要在该目录中创建一个文件,您可以执行以下操作:
File file2 = new File(file1.getAbsolutePath() + "newFile.txt"); // You may need to add a "File.seperator()" after the "file1.getAbsolutePath()" if the trailing "/" isn't included
if (file2.exists() == false)
file2.createNewFile();
为确保您的文件对公众可读,您应该add read permissions to the file:
file2.setReadable(true, false);
在 Apache 中,您可以设置一个虚拟主机,该主机指向您希望从中获取文件的目录。在 debian linux 上默认是/var/www
。
【讨论】:
以上是关于以编程方式创建文件夹以及使用 java 将内容保存到该位置的权限的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CEF WinForms 以编程方式将文件附件添加到网页