ballerina/file Ballerina library

1.14.0

Overview

This module provides APIs to create, delete, and rename files and directories, retrieve file metadata, manipulate file paths in an OS-compatible way, and listen to file system changes via a Directory Listener.

Key Features

  • Create, delete, and rename files and directories
  • Retrieve file metadata
  • OS-compatible file path manipulation, including path and path-list separators
  • Directory Listener for reacting to file create, modify, and delete events
  • Post-processing actions to delete or move a file after a listener remote method completes

Path separators

This module provides the following separators which are widely used in file path creation:

  • file:pathSeparator: It is a character used to separate the parent directories that make up the path to a specific location. For Windows, it’s ‘\’ and for UNIX it’s ‘/’
  • file:pathListSeparator: It is a character commonly used by the operating system to separate paths in the path list. For windows, it’s ‘;‘ and for UNIX it’s ‘:’

Directory listener

The file:Listener is used to monitor all the files and subdirectories inside the specified directory.

A Listener endpoint can be defined using the mandatory path parameter and the optional recursive parameter as follows.

Copy
listener file:Listener inFolder = new ({
    path: "<The directory path>",
    recursive: false
});

If the listener needs to monitor subdirectories of the given directory, recursive needs to be set to true. The default value of this is false.

A Service has the defined remote methods with the file:FileEvent and can be exposed via a Listener endpoint. When there are changes in the listening directory, the file:FileEvent will be triggered with the action of the file such as creating, modifying, or deleting.

The remote methods supported by the Service are as follows.

onCreate: This method is invoked once a new file is created in the listening directory.

onDelete: This method is invoked once an existing file is deleted from the listening directory.

onModify: This method is invoked once an existing file is modified in the listening directory.

The following code sample shows how to create a Service with the onCreate remote method and attach it to the above Listener endpoint:

Copy
service "localObserver" on inFolder {

    remote function onCreate(file:FileEvent m) returns error? {
        string msg = "Create: " + m.name;
        log:printInfo(msg);
    }
}

Post-processing actions

The @file:FunctionConfig annotation on onCreate or onModify declares what happens to the file after the remote method completes. afterProcess runs when the method returns successfully and afterError runs when it returns an error or panics. Each can be file:DELETE or a file:Move record whose moveTo directory receives the file. With preserveSubDirs (default true) the path relative to the listener's path is kept under moveTo. Missing destination directories are created, and an existing file at the destination is not overwritten.

Copy
service "localObserver" on inFolder {

    @file:FunctionConfig {
        afterProcess: {moveTo: "/data/archive"},
        afterError: {moveTo: "/data/failed"}
    }
    remote function onCreate(file:FileEvent m) returns error? {
        check process(m.name);
    }
}

Import

import ballerina/file;Copy

Other versions

See more...

Metadata

Released date: 8 days ago

Version: 1.14.0

License: Apache-2.0


Compatibility

Platform: java21

Ballerina version: 2201.12.0

GraalVM compatible: Yes


Pull count

Total: 761560

Current verison: 4606


Weekly downloads


Source repository


Keywords

file

path

directory

filepath

Type/Library

Type/Trigger

Area/Built-in

Area/Storage & File Management

Name/File


Contributors