Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中的azure中的父目录下添加子目录?_Java_Json_Azure_Logic_File Handling - Fatal编程技术网

如何在java中的azure中的父目录下添加子目录?

如何在java中的azure中的父目录下添加子目录?,java,json,azure,logic,file-handling,Java,Json,Azure,Logic,File Handling,我通过java服务在azure存储帐户中创建目录 jSON输入为: { "accountName" : "name", "accountkey" : "keyOfAzureAccount", "directoryStructure" : "directory1/directory2/directory3/directory4/directory5" } 我期望的是在azure帐户中的一个目录下创建这些目录。像directory5一样,它将位于directory4内部。

我通过java服务在azure存储帐户中创建目录

jSON输入为:

{   "accountName" : "name", 
    "accountkey"  : "keyOfAzureAccount",

    "directoryStructure" : "directory1/directory2/directory3/directory4/directory5"
}
我期望的是在azure帐户中的一个目录下创建这些目录。像directory5一样,它将位于directory4内部。目录4将位于目录3内。目录3将位于目录2内,目录2将位于目录1内

我的java代码如下:

@Override
    public JSONObject createDynamicDirectory(JSONObject jsonInput) throws InvalidKeyException, URISyntaxException {
        CloudFileClient fileClient = null;
        String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName="+jsonInput.get("accountName")+";"+"AccountKey="+jsonInput.get("accountkey");
        System.out.println(storageConnectionString);
        CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
        JSONObject jsonOutput = new JSONObject();
        try {
            fileClient = storageAccount.createCloudFileClient();
            String directoryName = jsonInput.get("directoryStructure").toString();

            String[] directoryNameArray = directoryName.split("\\s*/\\s*");
            System.out.println(directoryNameArray.length);

            CloudFileShare share = fileClient
                    .getShareReference(directoryNameArray[0].toLowerCase().replaceAll("[-+.^:,!@#$%&*()_~`]", ""));
            if (share.createIfNotExists()) {
                System.out.println("New share created named as "
                        + directoryName.toLowerCase().replaceAll("[-+.^:,!@#$%&*()_~`]", ""));
            }
            for(int i=0;i<directoryNameArray.length;i++)
            {
                CloudFileDirectory rootDir = share.getRootDirectoryReference();
                CloudFileDirectory parentDirectory = rootDir.getDirectoryReference(directoryNameArray[i]);
                if (parentDirectory.createIfNotExists()) {
                    System.out.println("new directory created named as " + directoryName);
                    jsonOutput.put("status", "successful");
                }
            }

        } catch (Exception e) {
            System.out.println("Exception is " + e);
            jsonOutput.put("status", "unsuccessful");
            jsonOutput.put("exception", e.toString());
        }
        return jsonOutput;
    }
}
此代码根据需要从directory1创建共享。但问题是,在同一个共享下,它会创建所有目录1、2、3、4、5。根据需要,与一个目录下的目录不同


如何实现我的java代码,以便根据需要创建目录?

试试这样的方法,代码是C语言的

        var parentDirectory = share.GetRootDirectoryReference();
        for (var i=1; i< directoryNameArray.Length; i++)
        {
            var directoryToCreate = directoryNameArray[i];
            var directory = parentDirectory.GetDirectoryReference(directoryToCreate);
            directory.CreateIfNotExists();
            Console.WriteLine("Created directory - " + directoryToCreate);
            parentDirectory = directory;
        }

基本上,您从共享作为根目录开始,并在开始创建子目录时不断更新根目录的引用。

Hi,请看以下问题: