Ich erstelle eine Anwendung zum Kopieren von Dateien von einem Verzeichnis in ein anderes.Wie kopiere ich die Datei von einem Verzeichnis zu einem anderen in Azure durch Java-Service?
JSon Eingang:
{ "accountName" : "name",
"accountKey" : "key",
"source" : "directory1/directory2/directory3/directory4",
"destination" : "directory1/directory2",
"fileToCopy" : "1"
}
Verzeichnis 4 unter Verzeichnis 3, 3 unter 2 und 2 ist unter 1.
Wollen Datei mit dem Namen "1" aus dem Verzeichnis 4 in das Verzeichnis kopieren 2.
Mein Java-Code ist:
@Override
public JSONObject copyFile(JSONObject jsonInput) throws IOException, 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 source = jsonInput.get("source").toString();
String destination = jsonInput.get("destination").toString();
String fileToCopy = jsonInput.get("fileToCopy").toString();
String[] sourceNameArray = source.split("\\s*/\\s*");
System.out.println(sourceNameArray.length);
String[] destinationNameArray = destination.split("\\s*/\\s*");
System.out.println(destinationNameArray.length);
CloudFileShare share = fileClient
.getShareReference(sourceNameArray[0].toLowerCase().replaceAll("[-+.^:,[email protected]#$%&*()_~`]", ""));
CloudFileDirectory rootDir = share.getRootDirectoryReference();
for (int i=0; i< sourceNameArray.length; i++)
{
String directoryToCreate = sourceNameArray[i];
CloudFileDirectory directory = rootDir.getDirectoryReference(directoryToCreate);
if(i==sourceNameArray.length-1)
{
CloudFile fileToCopyFromSorce = directory.getFileReference(fileToCopy);
for (int j=0; j< destinationNameArray.length; j++)
{
String directoryToCreateForDestination = destinationNameArray[j];
CloudFileDirectory directoryForDestination = rootDir.getDirectoryReference(directoryToCreateForDestination);
if(j==destinationNameArray.length-1){
CloudFile fileDestination = directoryForDestination.getFileReference(fileToCopy);
// is next line required?
//fileToCopyFromSorce.create(1);
fileDestination.startCopy(fileToCopyFromSorce);
System.out.println("copied to destination");
jsonOutput.put("status", "successful");
}
rootDir = directoryForDestination;
}
}
rootDir = directory;
}
} catch (Exception e) {
System.out.println("Exception is " + e);
jsonOutput.put("status", "unsuccessful");
jsonOutput.put("exception", e.toString());
}
return jsonOutput;
}
ich Störung erhalte wie
Exception is com.microsoft.azure.storage.StorageException: The specified parent path does not exist.
Aber ich habe übergeordnete Pfad in meinem azurblauen Speicherkonto angegeben.
Brauchen Sie einen Vorschlag für Code und Referenzcode, wenn möglich.
Vielen Dank. Es funktionierte. Aber können Sie mir bitte sagen, warum wir Code schreiben müssen, um ein Verzeichnis zu erstellen, selbst wenn wir wissen, dass diese bereits existieren? –
@AnuragBonde Nur überprüfen, und erstellen, wenn nicht existiert. Das ist die Methode 'createIfNotExists'. –
Ja, hab deinen Punkt. Danke nochmal. –