cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
What’s new: end-to-end encryption, Replay and Dash updates. Find out more about these updates, new features and more here.

Discuss Dropbox Developer & API

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Re: Move files and Folders

Move files and Folders

developersSave
Helpful | Level 6

Hi everyone, 

I've a question:
I need to move files and folders using dropbox API in my Java project. Do you have some code examples? I can't find them online and I don't know if it's possibile do that.

Thank you!

14 Replies 14

developersSave
Helpful | Level 6

Hi @Здравко 

that's my method for folders, but it doesn't work (to and from path are both id:etcetc):

public static void moveFolder(SuiteConfiguration suiteConfiguration,

String fromPath,String toPath) throws RelocationErrorException, DbxException, InterruptedException {

DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);

List<RelocationPath> entries = new ArrayList<RelocationPath>();

 

entries.add(new RelocationPath(fromPath, toPath));

RelocationBatchV2Launch moveBatchJob = dropboxClient.files().moveBatchV2(entries);

 

RelocationBatchV2JobStatus moveBatchCheck = null;

 

while (moveBatchCheck == null || moveBatchCheck.isInProgress()) {

// check this occasionally until it's done

moveBatchCheck = dropboxClient.files().moveBatchCheckV2(moveBatchJob.getAsyncJobIdValue());

Thread.sleep(10000);

System.out.println(moveBatchCheck);

}

//MoveV2Builder withAllowSharedFolder = dropboxClient.files().moveV2Builder("id:TMSaeghsn0AAAAAAAACV2Q/ios.png", "id:TMSaeghsn0AAAAAAAACV2w/ios.png").withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(true);

//RelocationResult result = withAllowSharedFolder.start();

// RelocationResult result = dropboxClient.files().moveV2(fromPath, toPath);

// return result.getMetadata().getPathDisplay();

}

 

 

Thank you!

Здравко
Legendary | Level 20

@developersSave wrote:

...

that's my method for folders, but it doesn't work (to and from path are both id:etcetc):

...



@Здравкоwrote:

... 'id' can be use as path in all cases where existing object is expected to be there. ...

When you have non existing object (the target path), you can combine id and trailing part of the path. For instance if targetId is folder where you want to move your file to and filename.ext is the taget name for the file in that folder, then 'toPath' can look something like $targetId/filename.ext (combining id and path). ...


@developersSave, Read more careful what I have described already. Where you got the target ID from??? First of all there is no such file/folder yet! Next, the ID is the same, only name and/or path changes, so cannot be different source and target IDs. Be more careful!

By the way, it's meaningless a batch operation for single move.

developersSave
Helpful | Level 6

hi @Здравко ,
I get my folders and files id from database, I saved them after upload.

If I need to move a sub-folder under my-app general folder, what have I to do?
Example:

Applications/My-App/folder-1/folder-2

I've to move "folder-2" under "My-App" folder, but I don't have any id for this one.

Thank you!

Здравко
Legendary | Level 20

@developersSave wrote:

...

I've to move "folder-2" under "My-App" folder, but I don't have any id for this one.
...


@developersSave, You don't need id for your app namespace root folder. It's just empty. Pass an empty string instead of real ID. 😉 The concatenation can proceed without change.

developersSave
Helpful | Level 6

Hi @Здравко ,

I solved everything in this way (all Paths are made with a DropBox id):

 

public static String moveFile(SuiteConfiguration suiteConfiguration,

String fromPath,String toPath) throws RelocationErrorException, DbxException {

DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);

 "id:TMSaeghsn0AAAAAAAACV2w/ios.png").withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(true);

RelocationResult result = dropboxClient.files().moveV2(fromPath, toPath);

return result.getMetadata().getPathDisplay();

}

 

public static void moveFolder(SuiteConfiguration suiteConfiguration,

String fromPath,String toPath) throws RelocationErrorException, DbxException, InterruptedException {

DbxClientV2 dropboxClient = getV2Client(suiteConfiguration);

MoveV2Builder withAllowSharedFolder = dropboxClient.files().moveV2Builder(fromPath,toPath).withAllowOwnershipTransfer(true).withAllowSharedFolder(true).withAutorename(false);

RelocationResult result = withAllowSharedFolder.start();

}

 

 

Thank you for your help

Need more support?