Creating a folder within web server under /public_

2019-05-18 05:15发布

问题:

I am trying to create a folder within web server using Java File handling APIs in my RESTFul web service developed using JERSEY. According to my understanding, when I target "xyz.com" , it by default points out /home/xyz/public_html/ in my server.

So when I try to create a folder as follows

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

The above code fails, I am not getting any exception, and no folder is created. How exactly I suppose to do it ? How to give path for public_html/ folder ?

Another point is, is it not happening because of permission issue ? , I actually tried another way , I manually created /appFolder under public_html/ and give full read write permission to that folder, but still I couldn't create any folder within that using above code.

Please let me know how to achieve it ? Any Sample code ? Also if possible let me know if JERSEY does give me APIs to make it simple ?

回答1:

To point to public web directory use

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

and append your path to the path (above resolved)



回答2:

According to my understanding, when I target "xyz.com" , it by default points out /home/xyz/public_html/ in my server.

What makes you think so? You're operating files in the code snippet given, so your path means /xyz.com/appFolder/ and nothing more. And it's very likely you're facing a permission issue trying to create folders like this.

As for absense of exception, that's a design feature of Java file API not to throw exceptions on certain failures, but rather return erroneous error codes. Check what is returned by mkdir() call and you'll find false there, as a signal of failure.