以编程方式创建文件夹以及使用 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 以编程方式将文件附件添加到网页

以编程方式将网页 HTM 保存为文本文件

如何在 iOS 中以编程方式将 sqlite 文件保存在本地文件夹或 nsbundle 中?

以编程方式打开 zip 文件菜单 C#

以编程方式创建时未保存 Sitecore 用户配置文件设置

从保存的文件以编程方式创建文件节点