Main Content

matlab.buildtool.io.File Class

Namespace: matlab.buildtool.io
Superclasses: matlab.buildtool.io.FileCollection

Single file or folder

Since R2023b

Description

The matlab.buildtool.io.File class represents a single file or folder. You can use this class to specify file-based inputs and outputs of a task. For more information about task inputs and outputs, see Improve Performance with Incremental Builds.

Creation

When you use a string to specify an argument or property that requires a file collection, MATLAB® automatically converts the string to a File object if the string does not include any wildcards. For example, plan("myTask").Inputs = ["myFile" "myFolder"] results in a 1-by-2 File vector.

To explicitly create a File object, use the matlab.buildtool.io.FileCollection.fromPaths or files method.

Properties

expand all

Path to the file or folder, specified as a string scalar or character vector, and returned as a string scalar. The specified file or folder is not required to exist on disk.

Attributes:

GetAccess
public
SetAccess
immutable

Examples

collapse all

Create file collections and return their paths.

Import the FileCollection class.

import matlab.buildtool.io.FileCollection

Create the folder structure used in this example. See the code of the local function createFile, which is used to create the files, at the end of this example.

mkdir source
createFile(fullfile("source","file1.m"))
createFile(fullfile("source","file2.m"))
mkdir source private
createFile(fullfile("source","private","file3.m"))
createFile(fullfile("source","private","file4.m"))

Create a file collection from all the .m files in the source folder and any of its subfolders. In this example, fc1 is a matlab.buildtool.io.Glob object because it is defined by a pattern that includes the * and ** wildcards.

fc1 = FileCollection.fromPaths("source/**/*.m")
fc1 = Glob
     source/**/*.m 

Return the paths of the file collection. When you call paths on a Glob object, the method returns the paths to the files and folders on disk that match the Glob pattern.

fc1.paths'
ans = 4×1 string
    "source\file1.m"
    "source\file2.m"
    "source\private\file3.m"
    "source\private\file4.m"

Add a file to the source folder, and return the paths of the file collection again. Even though fc1 has not been modified, the file collection has an additional path because its pattern now matches the newly created file as well.

createFile(fullfile("source","newFile.m"))
fc1.paths'
ans = 5×1 string
    "source\file1.m"
    "source\file2.m"
    "source\newFile.m"
    "source\private\file3.m"
    "source\private\file4.m"

Now, create file collections from the .m files in the source folder and any of its subfolders, as well as from another folder named nonexistentFolder. The fromPaths static method returns fc2 as a 1-by-2 FileCollection vector. The first element of the vector is a Glob object. The second element is a matlab.buildtool.io.File object because it represents a single folder.

fc2 = FileCollection.fromPaths(["source/**/*.m" "nonexistentFolder"])
fc2 = 1×2 heterogeneous FileCollection (Glob, File) array with no properties.
     source/**/*.m      nonexistentFolder 

Return the paths of fc2. In this example, even though nonexistentFolder does not exist on disk, the paths method returns the path to it. The method searches for files and folders on disk only for patterns that include the * or ** wildcard. If you call paths on a File object, the method returns the path to the specified file or folder even if it does not exist on disk.

fc2.paths'
ans = 6×1 string
    "source\file1.m"
    "source\file2.m"
    "source\newFile.m"
    "source\private\file3.m"
    "source\private\file4.m"
    "nonexistentFolder"

Local Function

This code shows the local function used in this example.

function createFile(filename)
fclose(fopen(filename,"w"));
end

Tips

  • If you call the paths method on a File object, the method returns the path to the specified file or folder even if it does not exist on disk.

Version History

Introduced in R2023b