Method

FolderItem.CopyFileTo


Warning

This item was deprecated in version 2019r2.1. Please use FolderItem.CopyTo as a replacement.

Description

If the FolderItem is a folder, then the folder and its contents are copied into Destination.

Notes

If Destination is a file and the file already exists, the copy is cancelled. You need to delete the existing file first. If there is an error, the LastErrorCode property contains an error code.

On Xojo Cloud, FolderItems that are copied using CopyFileTo cannot have their permissions changed. For now, the workaround is to use a Shell command:

#If TargetXojoCloud Then
  Var sh As New Shell
  sh.Execute("chmod 666 " + f.ShellPath)
#EndIf

Sample code

The following example method copies a source folderitem to a new destination using CopyFileTo. It returns True if all files in the folder were successfully copied and returns False otherwise.

Function CopyFileOrFolder(source As FolderItem, destination As FolderItem) As Boolean
  Var newFolder As FolderItem
  If source.IsFolder Then ' it's a folder
    newFolder = destination.Child(source.Name)
    newFolder.CreateAsFolder
    If Not newFolder.Exists Or Not newFolder.IsFolder Then
      ' folder was not created - stop processing
      Return False
    End If
    For Each file As FolderItem In source.Children
      If file = Nil Then
        ' inaccessible
        Return False
      End If
      If Not CopyFileOrFolder(file, newFolder) Then
        ' copy operation failed
        Return False
      End If
    Next
  Else ' it's not a folder
    source.CopyFileTo(destination)
    If source.LastErrorCode <> 0 Then
      Return False
    End If
  End If
  Return True
End Function

Compatibility

All project types on all supported operating systems.