File Plugin
The File Plugin of the 365 business Proxy Application enables full access to local file systems, network drives and UNC paths.
It is one of the Standard Plugins and can be installed directly via the Proxy Application Clients page in Microsoft Dynamics 365 Business Central.
AL integration
All functions are provided via the code unit bdev.PRX Proxy Application (ID 5523630).
Example
In the following example, a folder is read in, an existing file is deleted if necessary and a new file with the content “Hello, World!” is created:
procedure ExampleFilePlugin
var
files: Record "bdev.PRX File Item" temporary;
proxyApp: Codeunit "bdev.PRX Proxy Application";
begin
// get file list for directory "C:\temp"
proxyApp.ListFiles(
files,
'C:\temp'
);
// check whether "hello-world.txt" exists
files.Reset();
files.SetRange("Name", 'hello-world.txt');
files.SetRange("Is File", true);
if (files.FindFirst()) then
// if file exists, delete it
proxyApp.DeleteFile(files."File Path");
// create file "hello-world.txt"
proxyApp.PostFile(
'C:\temp\hello-world.txt',
GetFileWithContent('Hello, World!')
);
end;
local procedure GetFileWithContent(content: Text) file: Codeunit "Temp Blob"
var
stream: OutStream;
begin
file.CreateOutStream(stream, TextEncoding::UTF8);
stream.WriteText(content);
exit(file);
end;
Functions at a glance
List files (ListFiles)
files: Record "bdev.PRX File Item" temporary := ListFiles([clientId: Guid,] filePath: Text [,fileFilter: Text])
ListFiles(var files: Record "bdev.PRX File Item" temporary, [clientId: Guid,] filePath: Text [,fileFilter: Text])
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path for which the file list is to be retrieved.fileFilter: Text
Specifies the filter (e.g.*.txt) to be applied to the listing.
Return
Returns the temporary table bdev.PRX File Item, which represents the file list.
Check if file exists (FileExists)
fileExists: Boolean := FileExists([clientId: Guid,] filePath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path of the file.
**Returns
Returns true if the file exists.
Read file (GetFile)
file: Codeunit "Temp Blob" := GetFile([clientId: Guid,] filePath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path of the file.
Return
Returns Codeunit "Temp Blob" with the content of the file.
Write file (PostFile)
success: Boolean := PostFile([clientId: Guid,] filePath: Text, file: Codeunit "Temp Blob")
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path of the file.file: Codeunit "Temp Blob"
The file to be written.
**Returns
Returns true if the file was written successfully.
Delete file (DeleteFile)
success: Boolean := DeleteFile([clientId: Guid,] filePath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path of the file.
**Returns
Returns true if the file was successfully deleted.
Move file (MoveFile)
success: Boolean := MoveFile([clientId: Guid,] fromFilePath: Text, toFilePath: Text [, overwrite: Boolean])
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.fromFilePath: Text
Specifies the path or UNC path of the file to be moved.toFilePath: Text
Specifies the target path or UNC path to which the file is to be moved.overwrite: Boolean
Specifies whether the file should be overwritten at the destination if it already exists.
**Returns
Returns true if the file was successfully moved.
Copy file (CopyFile)
success: Boolean := CopyFile([clientId: Guid,] fromFilePath: Text, toFilePath: Text [, overwrite: Boolean])
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.fromFilePath: Text
Specifies the path or UNC path of the file to be copied.toFilePath: Text
Specifies the target path or UNC path to which the file is to be copied.overwrite: Boolean
Specifies whether the file should be overwritten at the destination if it already exists.
**Returns
Returns true if the file was copied successfully.
Rename file (RenameFile)
success: Boolean := RenameFile([clientId: Guid,] filePath: Text, newFilePath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.filePath: Text
Specifies the path or UNC path of the file.newFilePath: Text
Specifies the new name and path of the file.
**Returns
Returns true if the file has been successfully renamed.
Check if directory exists (DirectoryExists)
success: Boolean := DirectoryExists([clientId: Guid,] directoryPath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.directoryPath: Text
Specifies the path or UNC path of the directory.
**Returns
Returns true if the directory exists.
Create directory (CreateDirectory)
success: Boolean := CreateDirectory([clientId: Guid,] directoryPath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.directoryPath: Text
Specifies the path or UNC path of the directory to be created.
**Returns
Returns true if the directory has been created.
Delete directory (DeleteDirectory)
success: Boolean := DeleteDirectory([clientId: Guid,] directoryPath: Text [, recursive: Boolean])
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.directoryPath: Text
Specifies the path or UNC path of the directory to be deleted.recursive: Boolean
Specifies whether the directory is to be deleted recursively.
**Returns
Returns true if the directory has been deleted.
Move directory (MoveDirectory)
success: Boolean := MoveDirectory([clientId: Guid,] fromDirectoryPath: Text, toDirectoryPath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.fromDirectoryPath: Text
Specifies the path or UNC path of the directory to be moved.toDirectoryPath: Text
Specifies the path or UNC path to which the directory is to be moved.
**Returns
Returns true if the directory has been moved.
Copy directory (CopyDirectory)
success: Boolean := CopyDirectory([clientId: Guid,] fromDirectoryPath: Text, toDirectoryPath: Text)
Parameter
clientId: Guid(Optional)
Specifies the ID of the proxy application client on which the operation is to be executed.fromDirectoryPath: Text
Specifies the path or UNC path of the directory to be copied.toDirectoryPath: Text
Specifies the path or UNC path to which the directory is to be copied.
**Returns
Returns true if the directory has been copied.