OPC Studio User's Guide and Reference
MoveOrCopy(IEasyUAFileTransfer,UAEndpointDescriptor,UANamedNodeDescriptor,UANamedNodePath,Boolean,String) Method



OpcLabs.EasyOpcUA Assembly > OpcLabs.EasyOpc.UA.FileTransfer Namespace > IEasyUAFileTransferExtension Class > MoveOrCopy Method : MoveOrCopy(IEasyUAFileTransfer,UAEndpointDescriptor,UANamedNodeDescriptor,UANamedNodePath,Boolean,String) Method
The OPC UA file transfer object that will perform the operation.

This is typically the EasyUAFileTransferClient object.

The value of this parameter cannot be null (Nothing in Visual Basic).

Endpoint descriptor. Identifies the OPC-UA server.

Because the OpcLabs.EasyOpc.UA.UAEndpointDescriptor has implicit conversions from System.String and System.Uri, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a string (representing the endpoint URL, or a so-called OPC UA endpoint descriptor string), or a System.Uri object, in place of this parameter, and the corresponding endpoint descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.UAEndpointDescriptor.FromString or OpcLabs.EasyOpc.UA.UAEndpointDescriptor.FromUri static method instead.

Also, because the OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement and OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement have an implicit conversion to OpcLabs.EasyOpc.UA.UAEndpointDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement or OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement (results from OPC UA discovery) in place of this parameter, and the corresponding endpoint descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can convert a (non-null) OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement or OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement to OpcLabs.EasyOpc.UA.UAEndpointDescriptor using the ToUAEndpointDescriptor or ToUAEndpointDescriptor method instead.

If you are using OPC Wizard (for server development), an implicit conversion from OpcLabs.EasyOpc.UA.EasyUAServerCore can be used in the same way to simply pass the server object in place of this parameter, which will use its OpcLabs.EasyOpc.UA.EasyUAServerCore.EffectiveServerDescriptor property for the connection.

The value of this parameter cannot be null (Nothing in Visual Basic).

The named node descriptor of the file or directory to move or copy.

Because the OpcLabs.EasyOpc.UA.Navigation.UANamedNodeDescriptor has an implicit conversion from OpcLabs.EasyOpc.UA.UANodeDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.UANodeDescriptor (containing the final node descriptor) in place of this parameter, and the corresponding OPC UA named node descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.Navigation.UANamedNodeDescriptor.FromUANodeDescriptor static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

The named node path of the target directory of the move or copy operation.

Because the OpcLabs.EasyOpc.UA.Navigation.UANamedNodePath has an implicit conversion from OpcLabs.EasyOpc.UA.UANodeDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.UANodeDescriptor (containing the base and only node in the named node path) in place of this parameter, and the corresponding OPC UA named node path will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.Navigation.UANamedNodePath.FromUANodeDescriptor static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

A flag indicating if a copy of the file or directory should be created at the target directory.
The new name of the file or directory in the new location. If the string is empty, the name is unchanged.

The value of this parameter cannot be null (Nothing in Visual Basic).

Moves/renames or copies an OPC UA file or directory, specifying the endpoint descriptor, existing file or directory named node descriptor, new directory named node path, and new name.
Syntax
'Declaration
 
<ExtensionAttribute()>
<NotNullAttribute()>
Public Overloads Shared Function MoveOrCopy( _
   ByVal fileTransfer As IEasyUAFileTransfer, _
   ByVal endpointDescriptor As UAEndpointDescriptor, _
   ByVal existingFileOrDirectoryNamedNodeDescriptor As UANamedNodeDescriptor, _
   ByVal newDirectoryNamedNodePath As UANamedNodePath, _
   ByVal copyObject As Boolean, _
   ByVal newName As String _
) As UANodeId
'Usage
 
Dim fileTransfer As IEasyUAFileTransfer
Dim endpointDescriptor As UAEndpointDescriptor
Dim existingFileOrDirectoryNamedNodeDescriptor As UANamedNodeDescriptor
Dim newDirectoryNamedNodePath As UANamedNodePath
Dim copyObject As Boolean
Dim newName As String
Dim value As UANodeId
 
value = IEasyUAFileTransferExtension.MoveOrCopy(fileTransfer, endpointDescriptor, existingFileOrDirectoryNamedNodeDescriptor, newDirectoryNamedNodePath, copyObject, newName)

Parameters

fileTransfer
The OPC UA file transfer object that will perform the operation.

This is typically the EasyUAFileTransferClient object.

The value of this parameter cannot be null (Nothing in Visual Basic).

endpointDescriptor
Endpoint descriptor. Identifies the OPC-UA server.

Because the OpcLabs.EasyOpc.UA.UAEndpointDescriptor has implicit conversions from System.String and System.Uri, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a string (representing the endpoint URL, or a so-called OPC UA endpoint descriptor string), or a System.Uri object, in place of this parameter, and the corresponding endpoint descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.UAEndpointDescriptor.FromString or OpcLabs.EasyOpc.UA.UAEndpointDescriptor.FromUri static method instead.

Also, because the OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement and OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement have an implicit conversion to OpcLabs.EasyOpc.UA.UAEndpointDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement or OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement (results from OPC UA discovery) in place of this parameter, and the corresponding endpoint descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can convert a (non-null) OpcLabs.EasyOpc.UA.Discovery.UAApplicationElement or OpcLabs.EasyOpc.UA.Discovery.UADiscoveryElement to OpcLabs.EasyOpc.UA.UAEndpointDescriptor using the ToUAEndpointDescriptor or ToUAEndpointDescriptor method instead.

If you are using OPC Wizard (for server development), an implicit conversion from OpcLabs.EasyOpc.UA.EasyUAServerCore can be used in the same way to simply pass the server object in place of this parameter, which will use its OpcLabs.EasyOpc.UA.EasyUAServerCore.EffectiveServerDescriptor property for the connection.

The value of this parameter cannot be null (Nothing in Visual Basic).

existingFileOrDirectoryNamedNodeDescriptor
The named node descriptor of the file or directory to move or copy.

Because the OpcLabs.EasyOpc.UA.Navigation.UANamedNodeDescriptor has an implicit conversion from OpcLabs.EasyOpc.UA.UANodeDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.UANodeDescriptor (containing the final node descriptor) in place of this parameter, and the corresponding OPC UA named node descriptor will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.Navigation.UANamedNodeDescriptor.FromUANodeDescriptor static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

newDirectoryNamedNodePath
The named node path of the target directory of the move or copy operation.

Because the OpcLabs.EasyOpc.UA.Navigation.UANamedNodePath has an implicit conversion from OpcLabs.EasyOpc.UA.UANodeDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a OpcLabs.EasyOpc.UA.UANodeDescriptor (containing the base and only node in the named node path) in place of this parameter, and the corresponding OPC UA named node path will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.Navigation.UANamedNodePath.FromUANodeDescriptor static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

copyObject
A flag indicating if a copy of the file or directory should be created at the target directory.
newName
The new name of the file or directory in the new location. If the string is empty, the name is unchanged.

The value of this parameter cannot be null (Nothing in Visual Basic).

Return Value

Returns the node Id of the moved or copied object. Even if the object is moved, the server may return a new node Id for it.

Because there is an implicit conversion from OpcLabs.EasyOpc.UA.AddressSpace.UANodeId to OpcLabs.EasyOpc.UA.UANodeDescriptor, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use the returned OpcLabs.EasyOpc.UA.AddressSpace.UANodeId in any place where the OpcLabs.EasyOpc.UA.UANodeDescriptor is expected as input, and the corresponding node descriptor will be constructed automatically.

Also, because the OpcLabs.EasyOpc.UA.AddressSpace.UANodeId has an implicit conversion to System.String, and it converts to the expanded text of the node Id (OpcLabs.EasyOpc.UA.AddressSpace.UANodeId.ExpandedText), in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use the returned OpcLabs.EasyOpc.UA.AddressSpace.UANodeId in any place where expanded text of a node Id (a string) is expected as input, and the corresponding expanded text will be taken automatically from the node Id.

This method never returns null (Nothing in Visual Basic).

Exceptions
ExceptionDescription

A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.

This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception.

The OPC UA operation has failed. This operation exception in uniformly used to allow common handling of various kinds of errors. The System.Exception.InnerException always contains information about the actual error cause.

This is an operation error that depends on factors external to your program, and thus cannot be always avoided. Your code must handle it appropriately.

Remarks

This method internally uses the OPC UA File Transfer Method .

The existingFileOrDirectoryNamedNodeDescriptor must refer to an existing node in the server, of object type OpcLabs.EasyOpc.UA.AddressSpace.Standard.UAObjectTypeIds.FileType or OpcLabs.EasyOpc.UA.AddressSpace.Standard.UAObjectTypeIds.FileDirectoryType.

For this method to succeed, the existingFileOrDirectoryNamedNodeDescriptor must always contain the named node path (of the parent directory), in the OpcLabs.EasyOpc.UA.Navigation.UANamedNodeDescriptor.NamedNodePath property.

Recommendation: Whenever possible, do not use this method directly, and use a higher-level abstraction instead. You can obtain a writable file provider (using GetWritableFileProvider), and make use of its methods, and methods available on the writable directory contents (obtained using OpcLabs.BaseLib.Extensions.FileProviders.IWritableDirectory.GetWritableDirectoryContents) or writable file info (obtained using OpcLabs.BaseLib.Extensions.FileProviders.IWritableDirectory.GetWritableFileInfo).

This is an extension method (info: C#, VB.NET). In languages that have support for extensions methods (such as C# and VB.NET), you can use the extension method as if it were a regular method on the object that is its first parameter. In other languages (such as with Python.NET), you will call the extension as a static method, and pass it the object on which it acts as its first parameter.

Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also