Java创建目录运行时WebApp

时间:2010-10-18 05:37:00

标签: java directory

我在JBOSS上运行Java SEAM2中的webapp。

在我的应用程序中,我试图在运行/运行时创建目录。

那么会发生这些目录的创建,但是当我尝试将文件写入其中时,会抛出空指针异常。 所以重新启动我的服务器,一切运行良好,为什么呢?

if(ClassName.class.getClassLoader().getResource("roles/" + role ) == null)
        {
            //create directory with role name
            String rolePath = ClassName.class.getClassLoader().getResource("roles").getPath();
            rolePath = rolePath.substring(1, rolePath.length());
            rolePath = rolePath.replace("/", "\\");
            rolePath = rolePath + "\\" + role;

            if( !(new File(rolePath).mkdir()))
            {
                this.addMessage(FacesMessage.SEVERITY_ERROR, "Error Creating Role Directory");
                return;
            }

        }



        if(ClassName.class.getClassLoader().getResource("roles/" + role + "/" + app ) == null)
        {
            String appPath = ClassName.class.getClassLoader().getResource("roles/" + role).getPath();
            appPath = appPath.substring(1, appPath.length());
            appPath = appPath.replace("/", "\\");
            appPath = appPath + "\\" + app;

            File appFolder = new File(appPath);
            if( !(appFolder.mkdir()))
            {
                this.addMessage(FacesMessage.SEVERITY_ERROR, "Error Creating Role Directory");
                return;
            }


        }

我的猜测是,因为我使用的是getClassLoader,所以没有使用创建的新文件进行更新

1 个答案:

答案 0 :(得分:1)

从类加载器创建一个基于资源路径的文件夹是一个坏主意(你永远不会从srouce /文件夹到哪里) 更好的方法是,使用java.io.temp文件夹,或使用配置来了解系统中的获取存储库文件夹。