【问题标题】:Creating a folder within web server under /public_html/ in Java在 Java 中的 /public_html/ 下的 Web 服务器中创建一个文件夹
【发布时间】:2013-09-27 06:30:42
【问题描述】:

我正在尝试在使用 JERSEY 开发的 RESTFul Web 服务中使用 Java 文件处理 API 在 Web 服务器中创建一个文件夹。 据我了解,当我以 "xyz.com" 为目标时,它默认指向我的服务器中的 /home/xyz/public_html/ 。

所以当我尝试如下创建文件夹时

        String appFolderPath = "/xyz.com/appFolder/";
    File userNameFolder = new File(appFolderPath + userName);
    if (!userNameFolder.exists()) {
        folderPath = userNameFolder.mkdir();
    }

上面的代码失败了,我没有得到任何异常,也没有创建文件夹。 我到底想怎么做?如何为 public_html/ 文件夹提供路径?

还有一点,是不是因为权限问题? ,我实际上尝试了另一种方法,我在 public_html/ 下手动创建了 /appFolder 并授予该文件夹的完全读写权限,但我仍然无法使用上面的代码在其中创建任何文件夹。

请告诉我如何实现它?任何示例代码? 另外,如果可能的话,让我知道 JERSEY 是否确实为我提供了 API 以使其变得简单?

【问题讨论】:

    标签: java webserver jersey


    【解决方案1】:

    指向公共网络目录使用

    ServletContext context = request.getServletContext();
    String path = context.getRealPath("/");
    

    并将您的路径附加到path(以上已解决)

    【讨论】:

    【解决方案2】:

    据我了解,当我以 "xyz.com" 为目标时,它默认指向我的服务器中的 /home/xyz/public_html/ 。

    是什么让你这么认为?你在给定的代码 sn-p 中操作文件,所以你的路径意味着/xyz.com/appFolder/,仅此而已。您很可能在尝试创建这样的文件夹时遇到权限问题。

    至于没有异常,这是Java文件API的一个设计特性,在某些失败时不抛出异常,而是返回错误的错误代码。检查mkdir() 调用返回的内容,您会在那里找到false,作为失败的信号。

    【讨论】:

    • 至少将文件夹称为“/xyz.com/appFolder/”是否正确?
    • 是的,它为 mkdir() 返回 false。可能的原因是什么?是权限问题吗?如果是这种情况,我必须授予哪个文件夹读写访问权限?绝对不能给 public_html 文件夹。
    • 首先尝试使用 'mkdirs()' 而不是 'mkdir()'。如果它没有帮助,那么您将面临 persimmion 问题。要找出要授予权限的文件夹,请执行 userNameFolder.getAbsolutePath()。
    • 我使用了两种方式,使用 mkdirs() 和使用 getAbsolutePath() , getAbsolutePath() 返回预期的“xyz.com/appFolder”。但仍然是 mkdirs() 返回 false。
    • 我什至没有收到 securityException 。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2016-10-14
    • 2017-09-25
    • 1970-01-01
    相关资源
    最近更新 更多